modified all admin UIs to position action buttons on the left side of grids and implemented ActionDialog throughout rather than dedicated delete components
This commit is contained in:
72
Oqtane.Server/Controllers/ScheduleController.cs
Normal file
72
Oqtane.Server/Controllers/ScheduleController.cs
Normal file
@ -0,0 +1,72 @@
|
||||
using System.Collections.Generic;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Oqtane.Repository;
|
||||
using Oqtane.Models;
|
||||
using Oqtane.Shared;
|
||||
using Oqtane.Infrastructure;
|
||||
|
||||
namespace Oqtane.Controllers
|
||||
{
|
||||
[Route("{site}/api/[controller]")]
|
||||
public class ScheduleController : Controller
|
||||
{
|
||||
private readonly IScheduleRepository Schedules;
|
||||
private readonly ILogManager logger;
|
||||
|
||||
public ScheduleController(IScheduleRepository Schedules, ILogManager logger)
|
||||
{
|
||||
this.Schedules = Schedules;
|
||||
this.logger = logger;
|
||||
}
|
||||
|
||||
// GET: api/<controller>
|
||||
[HttpGet]
|
||||
public IEnumerable<Schedule> Get()
|
||||
{
|
||||
return Schedules.GetSchedules();
|
||||
}
|
||||
|
||||
// GET api/<controller>/5
|
||||
[HttpGet("{id}")]
|
||||
public Schedule Get(int id)
|
||||
{
|
||||
return Schedules.GetSchedule(id);
|
||||
}
|
||||
|
||||
// POST api/<controller>
|
||||
[HttpPost]
|
||||
[Authorize(Roles = Constants.HostRole)]
|
||||
public Schedule Post([FromBody] Schedule Schedule)
|
||||
{
|
||||
if (ModelState.IsValid)
|
||||
{
|
||||
Schedule = Schedules.AddSchedule(Schedule);
|
||||
logger.Log(LogLevel.Information, this, LogFunction.Create, "Schedule Added {Schedule}", Schedule);
|
||||
}
|
||||
return Schedule;
|
||||
}
|
||||
|
||||
// PUT api/<controller>/5
|
||||
[HttpPut("{id}")]
|
||||
[Authorize(Roles = Constants.HostRole)]
|
||||
public Schedule Put(int id, [FromBody] Schedule Schedule)
|
||||
{
|
||||
if (ModelState.IsValid)
|
||||
{
|
||||
Schedule = Schedules.UpdateSchedule(Schedule);
|
||||
logger.Log(LogLevel.Information, this, LogFunction.Update, "Schedule Updated {Schedule}", Schedule);
|
||||
}
|
||||
return Schedule;
|
||||
}
|
||||
|
||||
// DELETE api/<controller>/5
|
||||
[HttpDelete("{id}")]
|
||||
[Authorize(Roles = Constants.HostRole)]
|
||||
public void Delete(int id)
|
||||
{
|
||||
Schedules.DeleteSchedule(id);
|
||||
logger.Log(LogLevel.Information, this, LogFunction.Delete, "Schedule Deleted {ScheduleId}", id);
|
||||
}
|
||||
}
|
||||
}
|
74
Oqtane.Server/Controllers/ScheduleLogController.cs
Normal file
74
Oqtane.Server/Controllers/ScheduleLogController.cs
Normal file
@ -0,0 +1,74 @@
|
||||
using System.Collections.Generic;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Oqtane.Repository;
|
||||
using Oqtane.Models;
|
||||
using Oqtane.Shared;
|
||||
using Oqtane.Infrastructure;
|
||||
|
||||
namespace Oqtane.Controllers
|
||||
{
|
||||
[Route("{site}/api/[controller]")]
|
||||
public class ScheduleLogController : Controller
|
||||
{
|
||||
private readonly IScheduleLogRepository ScheduleLogs;
|
||||
private readonly ILogManager logger;
|
||||
|
||||
public ScheduleLogController(IScheduleLogRepository ScheduleLogs, ILogManager logger)
|
||||
{
|
||||
this.ScheduleLogs = ScheduleLogs;
|
||||
this.logger = logger;
|
||||
}
|
||||
|
||||
// GET: api/<controller>
|
||||
[HttpGet]
|
||||
[Authorize(Roles = Constants.HostRole)]
|
||||
public IEnumerable<ScheduleLog> Get()
|
||||
{
|
||||
return ScheduleLogs.GetScheduleLogs();
|
||||
}
|
||||
|
||||
// GET api/<controller>/5
|
||||
[HttpGet("{id}")]
|
||||
[Authorize(Roles = Constants.HostRole)]
|
||||
public ScheduleLog Get(int id)
|
||||
{
|
||||
return ScheduleLogs.GetScheduleLog(id);
|
||||
}
|
||||
|
||||
// POST api/<controller>
|
||||
[HttpPost]
|
||||
[Authorize(Roles = Constants.HostRole)]
|
||||
public ScheduleLog Post([FromBody] ScheduleLog ScheduleLog)
|
||||
{
|
||||
if (ModelState.IsValid)
|
||||
{
|
||||
ScheduleLog = ScheduleLogs.AddScheduleLog(ScheduleLog);
|
||||
logger.Log(LogLevel.Information, this, LogFunction.Create, "Schedule Log Added {ScheduleLog}", ScheduleLog);
|
||||
}
|
||||
return ScheduleLog;
|
||||
}
|
||||
|
||||
// PUT api/<controller>/5
|
||||
[HttpPut("{id}")]
|
||||
[Authorize(Roles = Constants.HostRole)]
|
||||
public ScheduleLog Put(int id, [FromBody] ScheduleLog ScheduleLog)
|
||||
{
|
||||
if (ModelState.IsValid)
|
||||
{
|
||||
ScheduleLog = ScheduleLogs.UpdateScheduleLog(ScheduleLog);
|
||||
logger.Log(LogLevel.Information, this, LogFunction.Update, "Schedule Log Updated {ScheduleLog}", ScheduleLog);
|
||||
}
|
||||
return ScheduleLog;
|
||||
}
|
||||
|
||||
// DELETE api/<controller>/5
|
||||
[HttpDelete("{id}")]
|
||||
[Authorize(Roles = Constants.HostRole)]
|
||||
public void Delete(int id)
|
||||
{
|
||||
ScheduleLogs.DeleteScheduleLog(id);
|
||||
logger.Log(LogLevel.Information, this, LogFunction.Delete, "Schedule Log Deleted {ScheduleLogId}", id);
|
||||
}
|
||||
}
|
||||
}
|
@ -18,6 +18,8 @@ namespace Oqtane.Repository
|
||||
public virtual DbSet<Alias> Alias { get; set; }
|
||||
public virtual DbSet<Tenant> Tenant { get; set; }
|
||||
public virtual DbSet<ModuleDefinition> ModuleDefinition { get; set; }
|
||||
public virtual DbSet<Schedule> Schedule { get; set; }
|
||||
public virtual DbSet<ScheduleLog> ScheduleLog { get; set; }
|
||||
|
||||
public override int SaveChanges()
|
||||
{
|
||||
|
@ -0,0 +1,14 @@
|
||||
using System.Collections.Generic;
|
||||
using Oqtane.Models;
|
||||
|
||||
namespace Oqtane.Repository
|
||||
{
|
||||
public interface IScheduleLogRepository
|
||||
{
|
||||
IEnumerable<ScheduleLog> GetScheduleLogs();
|
||||
ScheduleLog AddScheduleLog(ScheduleLog ScheduleLog);
|
||||
ScheduleLog UpdateScheduleLog(ScheduleLog ScheduleLog);
|
||||
ScheduleLog GetScheduleLog(int ScheduleLogId);
|
||||
void DeleteScheduleLog(int ScheduleLogId);
|
||||
}
|
||||
}
|
14
Oqtane.Server/Repository/Interfaces/IScheduleRepository.cs
Normal file
14
Oqtane.Server/Repository/Interfaces/IScheduleRepository.cs
Normal file
@ -0,0 +1,14 @@
|
||||
using System.Collections.Generic;
|
||||
using Oqtane.Models;
|
||||
|
||||
namespace Oqtane.Repository
|
||||
{
|
||||
public interface IScheduleRepository
|
||||
{
|
||||
IEnumerable<Schedule> GetSchedules();
|
||||
Schedule AddSchedule(Schedule Schedule);
|
||||
Schedule UpdateSchedule(Schedule Schedule);
|
||||
Schedule GetSchedule(int ScheduleId);
|
||||
void DeleteSchedule(int ScheduleId);
|
||||
}
|
||||
}
|
49
Oqtane.Server/Repository/ScheduleLogRepository.cs
Normal file
49
Oqtane.Server/Repository/ScheduleLogRepository.cs
Normal file
@ -0,0 +1,49 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Oqtane.Models;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System;
|
||||
|
||||
namespace Oqtane.Repository
|
||||
{
|
||||
public class ScheduleLogRepository : IScheduleLogRepository
|
||||
{
|
||||
private MasterDBContext db;
|
||||
|
||||
public ScheduleLogRepository(MasterDBContext context)
|
||||
{
|
||||
db = context;
|
||||
}
|
||||
|
||||
public IEnumerable<ScheduleLog> GetScheduleLogs()
|
||||
{
|
||||
return db.ScheduleLog.ToList();
|
||||
}
|
||||
|
||||
public ScheduleLog AddScheduleLog(ScheduleLog ScheduleLog)
|
||||
{
|
||||
db.ScheduleLog.Add(ScheduleLog);
|
||||
db.SaveChanges();
|
||||
return ScheduleLog;
|
||||
}
|
||||
|
||||
public ScheduleLog UpdateScheduleLog(ScheduleLog ScheduleLog)
|
||||
{
|
||||
db.Entry(ScheduleLog).State = EntityState.Modified;
|
||||
db.SaveChanges();
|
||||
return ScheduleLog;
|
||||
}
|
||||
|
||||
public ScheduleLog GetScheduleLog(int ScheduleLogId)
|
||||
{
|
||||
return db.ScheduleLog.Find(ScheduleLogId);
|
||||
}
|
||||
|
||||
public void DeleteScheduleLog(int ScheduleLogId)
|
||||
{
|
||||
ScheduleLog schedulelog = db.ScheduleLog.Find(ScheduleLogId);
|
||||
db.ScheduleLog.Remove(schedulelog);
|
||||
db.SaveChanges();
|
||||
}
|
||||
}
|
||||
}
|
49
Oqtane.Server/Repository/ScheduleRepository.cs
Normal file
49
Oqtane.Server/Repository/ScheduleRepository.cs
Normal file
@ -0,0 +1,49 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Oqtane.Models;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System;
|
||||
|
||||
namespace Oqtane.Repository
|
||||
{
|
||||
public class ScheduleRepository : IScheduleRepository
|
||||
{
|
||||
private MasterDBContext db;
|
||||
|
||||
public ScheduleRepository(MasterDBContext context)
|
||||
{
|
||||
db = context;
|
||||
}
|
||||
|
||||
public IEnumerable<Schedule> GetSchedules()
|
||||
{
|
||||
return db.Schedule.ToList();
|
||||
}
|
||||
|
||||
public Schedule AddSchedule(Schedule Schedule)
|
||||
{
|
||||
db.Schedule.Add(Schedule);
|
||||
db.SaveChanges();
|
||||
return Schedule;
|
||||
}
|
||||
|
||||
public Schedule UpdateSchedule(Schedule Schedule)
|
||||
{
|
||||
db.Entry(Schedule).State = EntityState.Modified;
|
||||
db.SaveChanges();
|
||||
return Schedule;
|
||||
}
|
||||
|
||||
public Schedule GetSchedule(int ScheduleId)
|
||||
{
|
||||
return db.Schedule.Find(ScheduleId);
|
||||
}
|
||||
|
||||
public void DeleteSchedule(int ScheduleId)
|
||||
{
|
||||
Schedule schedule = db.Schedule.Find(ScheduleId);
|
||||
db.Schedule.Remove(schedule);
|
||||
db.SaveChanges();
|
||||
}
|
||||
}
|
||||
}
|
@ -50,6 +50,41 @@ CREATE TABLE [dbo].[ModuleDefinition](
|
||||
)
|
||||
GO
|
||||
|
||||
CREATE TABLE [dbo].[Schedule] (
|
||||
[ScheduleId] [int] IDENTITY(1,1) NOT NULL,
|
||||
[Name] [nvarchar](200) NULL,
|
||||
[JobType] [nvarchar](200) NOT NULL,
|
||||
[Period] [int] NOT NULL,
|
||||
[Frequency] [char](1) NOT NULL,
|
||||
[StartDate] [datetime] NULL,
|
||||
[IsActive] [bit] NOT NULL,
|
||||
[RetentionHistory] [int] NOT NULL,
|
||||
[CreatedBy] [nvarchar](256) NULL,
|
||||
[CreatedOn] [datetime] NULL,
|
||||
[ModifiedBy] [nvarchar](256) NULL,
|
||||
[ModifiedOn] [datetime] NULL,
|
||||
CONSTRAINT [PK_Schedule] PRIMARY KEY CLUSTERED
|
||||
(
|
||||
[ScheduleId] ASC
|
||||
)
|
||||
)
|
||||
GO
|
||||
|
||||
CREATE TABLE [dbo].[ScheduleLog] (
|
||||
[ScheduleLogId] [int] IDENTITY(1,1) NOT NULL,
|
||||
[ScheduleId] [int] NOT NULL,
|
||||
[StartDate] [datetime] NOT NULL,
|
||||
[FinishDate] [datetime] NULL,
|
||||
[Succeeded] [bit] NULL,
|
||||
[Notes] [nvarchar](max) NULL,
|
||||
[NextExecution] [datetime] NULL,
|
||||
CONSTRAINT [PK_ScheduleLog] PRIMARY KEY CLUSTERED
|
||||
(
|
||||
[ScheduleLogId] ASC
|
||||
)
|
||||
)
|
||||
GO
|
||||
|
||||
CREATE TABLE [dbo].[ApplicationVersion](
|
||||
[ApplicationVersionId] [int] IDENTITY(1,1) NOT NULL,
|
||||
[Version] [nvarchar](50) NOT NULL,
|
||||
@ -71,6 +106,11 @@ REFERENCES [dbo].[Tenant] ([TenantId])
|
||||
ON DELETE CASCADE
|
||||
GO
|
||||
|
||||
ALTER TABLE [dbo].[ScheduleLog] WITH NOCHECK ADD CONSTRAINT [FK_ScheduleLog_Schedule] FOREIGN KEY([ScheduleId])
|
||||
REFERENCES [dbo].[Schedule] ([ScheduleId])
|
||||
ON DELETE CASCADE
|
||||
GO
|
||||
|
||||
/*
|
||||
|
||||
Create seed data
|
||||
|
@ -100,6 +100,8 @@ namespace Oqtane.Server
|
||||
services.AddScoped<IFileService, FileService>();
|
||||
services.AddScoped<IPackageService, PackageService>();
|
||||
services.AddScoped<ILogService, LogService>();
|
||||
services.AddScoped<IScheduleService, ScheduleService>();
|
||||
services.AddScoped<IScheduleLogService, ScheduleLogService>();
|
||||
|
||||
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
|
||||
|
||||
@ -175,6 +177,8 @@ namespace Oqtane.Server
|
||||
services.AddTransient<ISettingRepository, SettingRepository>();
|
||||
services.AddTransient<ILogRepository, LogRepository>();
|
||||
services.AddTransient<ILogManager, LogManager>();
|
||||
services.AddTransient<IScheduleRepository, ScheduleRepository>();
|
||||
services.AddTransient<IScheduleLogRepository, ScheduleLogRepository>();
|
||||
|
||||
// get list of loaded assemblies
|
||||
Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies();
|
||||
@ -367,6 +371,8 @@ namespace Oqtane.Server
|
||||
services.AddTransient<ISettingRepository, SettingRepository>();
|
||||
services.AddTransient<ILogRepository, LogRepository>();
|
||||
services.AddTransient<ILogManager, LogManager>();
|
||||
services.AddTransient<IScheduleRepository, ScheduleRepository>();
|
||||
services.AddTransient<IScheduleLogRepository, ScheduleLogRepository>();
|
||||
|
||||
// get list of loaded assemblies
|
||||
Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies();
|
||||
|
Reference in New Issue
Block a user