diff --git a/Berizco.Api/Brizco.Api.csproj b/Berizco.Api/Brizco.Api.csproj
index 8604108..5e1f5ca 100644
--- a/Berizco.Api/Brizco.Api.csproj
+++ b/Berizco.Api/Brizco.Api.csproj
@@ -89,6 +89,7 @@
+
diff --git a/Berizco.Api/Controllers/ComplexController.cs b/Berizco.Api/Controllers/ComplexController.cs
new file mode 100644
index 0000000..bbf7480
--- /dev/null
+++ b/Berizco.Api/Controllers/ComplexController.cs
@@ -0,0 +1,48 @@
+namespace Brizco.Api.Controllers;
+
+public class ComplexController : ICarterModule
+{
+
+ public virtual void AddRoutes(IEndpointRouteBuilder app)
+ {
+ var group = app.NewVersionedApi("Complex").MapGroup($"api/complex");
+
+ group.MapGet("{page}", GetAllAsync)
+ .WithDisplayName("GetAllComplex")
+ .HasApiVersion(1.0);
+
+ group.MapGet("{id}", GetAsync)
+ .WithDisplayName("GetOneComplex")
+ .HasApiVersion(1.0);
+
+ group.MapPost("", Post)
+ .HasApiVersion(1.0);
+
+ group.MapPut("", Put)
+ .HasApiVersion(1.0);
+
+ group.MapDelete("", Delete)
+ .HasApiVersion(1.0);
+ }
+
+ // GET:Get All Entity
+ public async Task GetAllAsync(int page,ISender sender, CancellationToken cancellationToken)
+ => TypedResults.Ok(await sender.Send(new GetComplexesQuery(page), cancellationToken));
+
+ // GET:Get An Entity By Id
+ public async Task GetAsync(Guid id, ISender sender, CancellationToken cancellationToken)
+ => TypedResults.Ok(await sender.Send(new GetComplexQuery(id)));
+
+ // POST:Create Entity
+ public async Task Post([FromBody] CreateComplexCommand ent, ISender mediator, CancellationToken cancellationToken)
+ => TypedResults.Ok(await mediator.Send(ent, cancellationToken));
+
+ // PUT:Update Entity
+ public async Task Put([FromBody] UpdateComplexCommand ent, ISender mediator, CancellationToken cancellationToken)
+ => TypedResults.Ok(await mediator.Send(ent, cancellationToken));
+
+ // DELETE:Delete Entity
+ public async Task Delete(Guid id, ISender mediator, CancellationToken cancellationToken)
+ => TypedResults.Ok(await mediator.Send(new DeleteComplexCommand(id), cancellationToken));
+
+}
\ No newline at end of file
diff --git a/Berizco.Api/Controllers/ShiftController.cs b/Berizco.Api/Controllers/ShiftController.cs
index 5bd86ac..92270aa 100644
--- a/Berizco.Api/Controllers/ShiftController.cs
+++ b/Berizco.Api/Controllers/ShiftController.cs
@@ -8,7 +8,7 @@ public class ShiftController : ICarterModule
{
var group = app.NewVersionedApi("Shift").MapGroup($"api/shift");
- group.MapGet("", GetAllAsync)
+ group.MapGet("{page}", GetAllAsync)
.WithDisplayName("GetAllShift")
.HasApiVersion(1.0);
@@ -24,11 +24,16 @@ public class ShiftController : ICarterModule
group.MapDelete("", Delete)
.HasApiVersion(1.0);
+
+
+ group.MapPost("/plan", Post)
+ .WithDisplayName("AddNewPlan")
+ .HasApiVersion(1.0);
}
// GET:Get All Entity
- public async Task GetAllAsync(ISender sender, CancellationToken cancellationToken)
- => TypedResults.Ok(await sender.Send(new GetShiftsQuery(), cancellationToken));
+ public async Task GetAllAsync(int page,ISender sender, CancellationToken cancellationToken)
+ => TypedResults.Ok(await sender.Send(new GetShiftsQuery(page), cancellationToken));
// GET:Get An Entity By Id
public async Task GetAsync(Guid id, ISender sender, CancellationToken cancellationToken)
diff --git a/Berizco.Api/Controllers/TaskController.cs b/Berizco.Api/Controllers/TaskController.cs
index 16e65ee..01c22c1 100644
--- a/Berizco.Api/Controllers/TaskController.cs
+++ b/Berizco.Api/Controllers/TaskController.cs
@@ -9,7 +9,7 @@ public class TaskController : ICarterModule
{
var group = app.NewVersionedApi("Task").MapGroup($"api/task");
- group.MapGet("", GetAllAsync)
+ group.MapGet("{page}", GetAllAsync)
.WithDisplayName("GetAllTask")
.HasApiVersion(1.0);
@@ -28,8 +28,8 @@ public class TaskController : ICarterModule
}
// GET:Get All Entity
- public async Task GetAllAsync(ISender sender, CancellationToken cancellationToken)
- => TypedResults.Ok(await sender.Send(new GetTasksQuery(), cancellationToken));
+ public async Task GetAllAsync(int page,ISender sender, CancellationToken cancellationToken)
+ => TypedResults.Ok(await sender.Send(new GetTasksQuery(page), cancellationToken));
// GET:Get An Entity By Id
public async Task GetAsync(Guid id, ISender sender, CancellationToken cancellationToken)
diff --git a/Berizco.Api/Services/CurrentUserService.cs b/Berizco.Api/Services/CurrentUserService.cs
new file mode 100644
index 0000000..b491e9c
--- /dev/null
+++ b/Berizco.Api/Services/CurrentUserService.cs
@@ -0,0 +1,18 @@
+using Brizco.Repository.Abstracts;
+
+namespace Brizco.Api.Services;
+
+public class CurrentUserService : ICurrentUserService
+{
+ private readonly IHttpContextAccessor _httpContextAccessor;
+
+ public CurrentUserService(IHttpContextAccessor httpContextAccessor)
+ {
+ _httpContextAccessor = httpContextAccessor;
+ }
+
+ public string? UserId => _httpContextAccessor.HttpContext?.User?.FindFirstValue(ClaimTypes.NameIdentifier);
+ public string? RoleName => _httpContextAccessor.HttpContext?.User?.FindFirstValue(ClaimTypes.Role);
+ public string? UserName => _httpContextAccessor.HttpContext?.User?.FindFirstValue(ClaimTypes.Name);
+ public string? ComplexId => _httpContextAccessor.HttpContext?.User?.FindFirstValue("ComplexId");
+}
\ No newline at end of file
diff --git a/Berizco.Repository/Abstracts/ICurrentUserService.cs b/Berizco.Repository/Abstracts/ICurrentUserService.cs
new file mode 100644
index 0000000..a53ba6d
--- /dev/null
+++ b/Berizco.Repository/Abstracts/ICurrentUserService.cs
@@ -0,0 +1,9 @@
+namespace Brizco.Repository.Abstracts;
+
+public interface ICurrentUserService : IScopedDependency
+{
+ string? UserId { get; }
+ string? RoleName { get; }
+ string? ComplexId { get; }
+ string? UserName { get; }
+}
\ No newline at end of file
diff --git a/Berizco.Repository/Brizco.Repository.csproj b/Berizco.Repository/Brizco.Repository.csproj
index 65f38ea..7f2feeb 100644
--- a/Berizco.Repository/Brizco.Repository.csproj
+++ b/Berizco.Repository/Brizco.Repository.csproj
@@ -44,7 +44,9 @@
+
+
diff --git a/Berizco.Repository/Handlers/Activity/CreateActivityCommandHandler.cs b/Berizco.Repository/Handlers/Activity/CreateActivityCommandHandler.cs
index f94fdc9..41bb5b8 100644
--- a/Berizco.Repository/Handlers/Activity/CreateActivityCommandHandler.cs
+++ b/Berizco.Repository/Handlers/Activity/CreateActivityCommandHandler.cs
@@ -1,17 +1,23 @@
-using Brizco.Domain.Dtos.LargDtos;
-
-namespace Brizco.Repository.Handlers.Activity;
+namespace Brizco.Repository.Handlers.Activity;
public class CreateActivityCommandHandler : IRequestHandler
{
private readonly IRepositoryWrapper _repositoryWrapper;
- public CreateActivityCommandHandler(IRepositoryWrapper repositoryWrapper)
+ private readonly ICurrentUserService _currentUserService;
+
+ public CreateActivityCommandHandler(IRepositoryWrapper repositoryWrapper,ICurrentUserService currentUserService)
{
_repositoryWrapper = repositoryWrapper;
+ _currentUserService = currentUserService;
}
public async Task Handle(CreateActivityCommand request, CancellationToken cancellationToken)
{
+ if (_currentUserService.ComplexId == null)
+ throw new AppException("ComplexId is null", ApiResultStatusCode.NotFound);
+ if (!Guid.TryParse(_currentUserService.ComplexId, out Guid complexId))
+ throw new AppException("ComplexId is wrong", ApiResultStatusCode.NotFound);
+
var task = Domain.Entities.Task.Activity
.Create(
request.Status,
@@ -27,7 +33,8 @@ public class CreateActivityCommandHandler : IRequestHandler()
.TableNoTracking
- .FirstOrDefaultAsync(s => s.Id == request.id, cancellationToken);
+ .FirstOrDefaultAsync(s => s.Id == request.Id, cancellationToken);
if (task == null)
throw new AppException("Task not found", ApiResultStatusCode.NotFound);
_repositoryWrapper.SetRepository()
diff --git a/Berizco.Repository/Handlers/Activity/UpdateActivityCommandHandler.cs b/Berizco.Repository/Handlers/Activity/UpdateActivityCommandHandler.cs
index 519021a..9871f4f 100644
--- a/Berizco.Repository/Handlers/Activity/UpdateActivityCommandHandler.cs
+++ b/Berizco.Repository/Handlers/Activity/UpdateActivityCommandHandler.cs
@@ -3,10 +3,12 @@
public class UpdateActivityCommandHandler : IRequestHandler
{
private readonly IRepositoryWrapper _repositoryWrapper;
+ private readonly ICurrentUserService _currentUserService;
- public UpdateActivityCommandHandler(IRepositoryWrapper repositoryWrapper)
+ public UpdateActivityCommandHandler(IRepositoryWrapper repositoryWrapper,ICurrentUserService currentUserService)
{
_repositoryWrapper = repositoryWrapper;
+ _currentUserService = currentUserService;
}
public async Task Handle(UpdateActivityCommand request, CancellationToken cancellationToken)
@@ -15,6 +17,10 @@ public class UpdateActivityCommandHandler : IRequestHandler s.Id == request.Id,cancellationToken);
if (task == null)
throw new AppException("Task not found", ApiResultStatusCode.NotFound);
+ if (_currentUserService.ComplexId == null)
+ throw new AppException("ComplexId is null", ApiResultStatusCode.NotFound);
+ if (!Guid.TryParse(_currentUserService.ComplexId,out Guid complexId))
+ throw new AppException("ComplexId is wrong", ApiResultStatusCode.NotFound);
var newTask = Domain.Entities.Task.Activity.Create(
request.Status,
@@ -30,7 +36,8 @@ public class UpdateActivityCommandHandler : IRequestHandler
+{
+ private readonly IRepositoryWrapper _repositoryWrapper;
+ private readonly ICurrentUserService _currentUserService;
+
+ public CreateComplexCommandHandler(IRepositoryWrapper repositoryWrapper,ICurrentUserService currentUserService)
+ {
+ _repositoryWrapper = repositoryWrapper;
+ _currentUserService = currentUserService;
+ }
+
+ public async Task Handle(CreateComplexCommand request, CancellationToken cancellationToken)
+ {
+ var complex = Domain.Entities.Complex.Complex.Create(request.Name, request.Address, request.SupportPhone);
+ _repositoryWrapper.SetRepository().Add(complex);
+ await _repositoryWrapper.SaveChangesAsync(cancellationToken);
+ return complex.AdaptToSDto();
+ }
+}
\ No newline at end of file
diff --git a/Berizco.Repository/Handlers/Complex/DeleteComplexCommandHandler.cs b/Berizco.Repository/Handlers/Complex/DeleteComplexCommandHandler.cs
new file mode 100644
index 0000000..2dec095
--- /dev/null
+++ b/Berizco.Repository/Handlers/Complex/DeleteComplexCommandHandler.cs
@@ -0,0 +1,24 @@
+namespace Brizco.Repository.Handlers.Complex;
+
+public class DeleteComplexCommandHandler : IRequestHandler
+{
+ private readonly IRepositoryWrapper _repositoryWrapper;
+
+ public DeleteComplexCommandHandler(IRepositoryWrapper repositoryWrapper)
+ {
+ _repositoryWrapper = repositoryWrapper;
+ }
+ public async Task Handle(DeleteComplexCommand request, CancellationToken cancellationToken)
+ {
+ var task = await _repositoryWrapper.SetRepository()
+ .TableNoTracking
+ .FirstOrDefaultAsync(s => s.Id == request.Id, cancellationToken);
+ if (task == null)
+ throw new AppException("Task not found", ApiResultStatusCode.NotFound);
+ _repositoryWrapper.SetRepository()
+ .Delete(task);
+
+ await _repositoryWrapper.SaveChangesAsync(cancellationToken);
+ return true;
+ }
+}
\ No newline at end of file
diff --git a/Berizco.Repository/Handlers/Complex/GetComplexQueryHandler.cs b/Berizco.Repository/Handlers/Complex/GetComplexQueryHandler.cs
new file mode 100644
index 0000000..cd5b59b
--- /dev/null
+++ b/Berizco.Repository/Handlers/Complex/GetComplexQueryHandler.cs
@@ -0,0 +1,23 @@
+namespace Brizco.Repository.Handlers.Complex;
+
+public class GetComplexQueryHandler : IRequestHandler
+{
+ private readonly IRepositoryWrapper _repositoryWrapper;
+
+ public GetComplexQueryHandler(IRepositoryWrapper repositoryWrapper)
+ {
+ _repositoryWrapper = repositoryWrapper;
+ }
+
+ public async Task Handle(GetComplexQuery request, CancellationToken cancellationToken)
+ {
+ var complex = await _repositoryWrapper.SetRepository()
+ .TableNoTracking
+ .Where(s => s.Id == request.Id)
+ .Select(ComplexMapper.ProjectToLDto)
+ .FirstOrDefaultAsync(cancellationToken);
+ if (complex == null)
+ throw new AppException("Complex not found", ApiResultStatusCode.NotFound);
+ return complex;
+ }
+}
\ No newline at end of file
diff --git a/Berizco.Repository/Handlers/Complex/GetComplexesQueryHandler.cs b/Berizco.Repository/Handlers/Complex/GetComplexesQueryHandler.cs
new file mode 100644
index 0000000..8958889
--- /dev/null
+++ b/Berizco.Repository/Handlers/Complex/GetComplexesQueryHandler.cs
@@ -0,0 +1,21 @@
+namespace Brizco.Repository.Handlers.Complex;
+
+public class GetComplexesQueryHandler : IRequestHandler>
+{
+ private readonly IRepositoryWrapper _repositoryWrapper;
+
+ public GetComplexesQueryHandler(IRepositoryWrapper repositoryWrapper)
+ {
+ _repositoryWrapper = repositoryWrapper;
+ }
+ public async Task> Handle(GetComplexesQuery request, CancellationToken cancellationToken)
+ {
+ var tasks = await _repositoryWrapper.SetRepository().TableNoTracking
+ .OrderByDescending(s => s.CreatedAt)
+ .Skip(request.Page * 15).Take(15)
+ .Select(ComplexMapper.ProjectToSDto)
+ .ToListAsync(cancellationToken);
+
+ return tasks;
+ }
+}
\ No newline at end of file
diff --git a/Berizco.Repository/Handlers/Complex/UpdateActivityCommandHandler.cs b/Berizco.Repository/Handlers/Complex/UpdateActivityCommandHandler.cs
new file mode 100644
index 0000000..a17e9cb
--- /dev/null
+++ b/Berizco.Repository/Handlers/Complex/UpdateActivityCommandHandler.cs
@@ -0,0 +1,50 @@
+namespace Brizco.Repository.Handlers.Complex;
+
+public class UpdateActivityCommandHandler : IRequestHandler
+{
+ private readonly IRepositoryWrapper _repositoryWrapper;
+ private readonly ICurrentUserService _currentUserService;
+
+ public UpdateActivityCommandHandler(IRepositoryWrapper repositoryWrapper,ICurrentUserService currentUserService)
+ {
+ _repositoryWrapper = repositoryWrapper;
+ _currentUserService = currentUserService;
+ }
+
+ public async Task Handle(UpdateActivityCommand request, CancellationToken cancellationToken)
+ {
+ var task = await _repositoryWrapper.SetRepository()
+ .TableNoTracking.FirstOrDefaultAsync(s => s.Id == request.Id,cancellationToken);
+ if (task == null)
+ throw new AppException("Task not found", ApiResultStatusCode.NotFound);
+ if (_currentUserService.ComplexId == null)
+ throw new AppException("ComplexId is null", ApiResultStatusCode.NotFound);
+ if (!Guid.TryParse(_currentUserService.ComplexId,out Guid complexId))
+ throw new AppException("ComplexId is wrong", ApiResultStatusCode.NotFound);
+
+ var newTask = Domain.Entities.Task.Activity.Create(
+ request.Status,
+ request.DoneAt,
+ request.PerformanceDescription,
+ request.Title,
+ request.Description,
+ request.Type,
+ request.IsRelatedToShift,
+ request.IsRelatedToRole,
+ request.IsRelatedToPerson,
+ request.IsDisposable,
+ request.SetFor,
+ request.HasDisposed,
+ request.Amount,
+ request.AmountType,
+ complexId);
+
+ newTask.Id = request.Id;
+
+ _repositoryWrapper.SetRepository()
+ .Update(newTask);
+ await _repositoryWrapper.SaveChangesAsync(cancellationToken);
+
+ return true;
+ }
+}
\ No newline at end of file
diff --git a/Berizco.Repository/Handlers/Shift/CreateShiftCommandHandler.cs b/Berizco.Repository/Handlers/Shift/CreateShiftCommandHandler.cs
index ca3a47a..f56b0c0 100644
--- a/Berizco.Repository/Handlers/Shift/CreateShiftCommandHandler.cs
+++ b/Berizco.Repository/Handlers/Shift/CreateShiftCommandHandler.cs
@@ -3,17 +3,27 @@
public class CreateShiftCommandHandler : IRequestHandler
{
private readonly IRepositoryWrapper _repositoryWrapper;
- public CreateShiftCommandHandler(IRepositoryWrapper repositoryWrapper)
+ private readonly ICurrentUserService _currentUserService;
+
+ public CreateShiftCommandHandler(IRepositoryWrapper repositoryWrapper,ICurrentUserService currentUserService)
{
_repositoryWrapper = repositoryWrapper;
+ _currentUserService = currentUserService;
}
public async Task Handle(CreateShiftCommand request, CancellationToken cancellationToken)
{
+
+ if (_currentUserService.ComplexId == null)
+ throw new AppException("ComplexId is null", ApiResultStatusCode.NotFound);
+ if (!Guid.TryParse(_currentUserService.ComplexId, out Guid complexId))
+ throw new AppException("ComplexId is wrong", ApiResultStatusCode.NotFound);
+
var shift = Domain.Entities.Shift.Shift
.Create(request.Title,
request.Description,
request.StartAt,
- request.EndAt);
+ request.EndAt,
+ complexId);
request.DayOfWeeks.ForEach(d => shift.SetDay(d));
diff --git a/Berizco.Repository/Handlers/Shift/GetShiftQueryHandler.cs b/Berizco.Repository/Handlers/Shift/GetShiftQueryHandler.cs
index 6f44db2..bd787a4 100644
--- a/Berizco.Repository/Handlers/Shift/GetShiftQueryHandler.cs
+++ b/Berizco.Repository/Handlers/Shift/GetShiftQueryHandler.cs
@@ -1,10 +1,10 @@
namespace Brizco.Repository.Handlers.Shift;
-public class GetShiftQueryHandler : IRequestHandler
+public class GetShiftPlanQueryHandler : IRequestHandler
{
private readonly IRepositoryWrapper _repositoryWrapper;
- public GetShiftQueryHandler(IRepositoryWrapper repositoryWrapper)
+ public GetShiftPlanQueryHandler(IRepositoryWrapper repositoryWrapper)
{
_repositoryWrapper = repositoryWrapper;
}
diff --git a/Berizco.Repository/Handlers/Shift/GetShiftsQueryHandler.cs b/Berizco.Repository/Handlers/Shift/GetShiftsQueryHandler.cs
index 5e10aba..679393a 100644
--- a/Berizco.Repository/Handlers/Shift/GetShiftsQueryHandler.cs
+++ b/Berizco.Repository/Handlers/Shift/GetShiftsQueryHandler.cs
@@ -1,10 +1,10 @@
namespace Brizco.Repository.Handlers.Shift;
-public class GetShiftsQueryHandler : IRequestHandler>
+public class GetShiftPlansQueryHandler : IRequestHandler>
{
private readonly IRepositoryWrapper _repositoryWrapper;
- public GetShiftsQueryHandler(IRepositoryWrapper repositoryWrapper)
+ public GetShiftPlansQueryHandler(IRepositoryWrapper repositoryWrapper)
{
_repositoryWrapper = repositoryWrapper;
}
diff --git a/Berizco.Repository/Handlers/Shift/UpdateShiftCommandHandler.cs b/Berizco.Repository/Handlers/Shift/UpdateShiftCommandHandler.cs
index 13138aa..5d8c6cd 100644
--- a/Berizco.Repository/Handlers/Shift/UpdateShiftCommandHandler.cs
+++ b/Berizco.Repository/Handlers/Shift/UpdateShiftCommandHandler.cs
@@ -3,10 +3,12 @@
public class UpdateShiftCommandHandler : IRequestHandler
{
private readonly IRepositoryWrapper _repositoryWrapper;
+ private readonly ICurrentUserService _currentUserService;
- public UpdateShiftCommandHandler(IRepositoryWrapper repositoryWrapper)
+ public UpdateShiftCommandHandler(IRepositoryWrapper repositoryWrapper,ICurrentUserService currentUserService)
{
_repositoryWrapper = repositoryWrapper;
+ _currentUserService = currentUserService;
}
public async Task Handle(UpdateShiftCommand request, CancellationToken cancellationToken)
@@ -16,7 +18,16 @@ public class UpdateShiftCommandHandler : IRequestHandler()
.Update(newShift);
diff --git a/Berizco.Repository/Handlers/ShiftPlan/CreateShiftPlanCommandHandler.cs b/Berizco.Repository/Handlers/ShiftPlan/CreateShiftPlanCommandHandler.cs
new file mode 100644
index 0000000..23b80dc
--- /dev/null
+++ b/Berizco.Repository/Handlers/ShiftPlan/CreateShiftPlanCommandHandler.cs
@@ -0,0 +1,30 @@
+namespace Brizco.Repository.Handlers.ShiftPlan;
+
+public class CreateShiftPlanCommandHandler : IRequestHandler
+{
+ private readonly IRepositoryWrapper _repositoryWrapper;
+ public CreateShiftPlanCommandHandler(IRepositoryWrapper repositoryWrapper)
+ {
+ _repositoryWrapper = repositoryWrapper;
+ }
+ public async Task Handle(CreateShiftPlanCommand request, CancellationToken cancellationToken)
+ {
+ var shift = await _repositoryWrapper.SetRepository()
+ .TableNoTracking
+ .FirstOrDefaultAsync(s => s.Id == request.ShiftId, cancellationToken);
+
+ if (shift == null)
+ throw new AppException("Shift not found", ApiResultStatusCode.NotFound);
+
+ var shiftPlan = shift.AddPlan(request.StartAt, request.EndAt);
+
+ if (request.UserIds.Count == 0)
+ throw new AppException("شیفت بندی مورد نظر باید حداقل متشکل از یک فرد باشد", ApiResultStatusCode.BadRequest);
+
+ request.UserIds.ForEach(i=>shiftPlan.AddUser(i));
+
+ _repositoryWrapper.SetRepository().Add(shiftPlan);
+ await _repositoryWrapper.SaveChangesAsync(cancellationToken);
+ return shiftPlan.AdaptToLDto();
+ }
+}
\ No newline at end of file
diff --git a/Berizco.Repository/Handlers/ShiftPlan/DeleteShiftPlanCommandHandler.cs b/Berizco.Repository/Handlers/ShiftPlan/DeleteShiftPlanCommandHandler.cs
new file mode 100644
index 0000000..160d56c
--- /dev/null
+++ b/Berizco.Repository/Handlers/ShiftPlan/DeleteShiftPlanCommandHandler.cs
@@ -0,0 +1,26 @@
+namespace Brizco.Repository.Handlers.ShiftPlan;
+
+public class DeleteShiftPlanCommandHandler : IRequestHandler
+{
+ private readonly IRepositoryWrapper _repositoryWrapper;
+
+ public DeleteShiftPlanCommandHandler(IRepositoryWrapper repositoryWrapper)
+ {
+ _repositoryWrapper = repositoryWrapper;
+ }
+
+ public async Task Handle(DeleteShiftPlanCommand request, CancellationToken cancellationToken)
+ {
+ var shiftPlan = await _repositoryWrapper.SetRepository()
+ .TableNoTracking.FirstOrDefaultAsync(s => s.Id == request.Id);
+
+ if (shiftPlan == null)
+ throw new AppException("ShiftPlan not found", ApiResultStatusCode.NotFound);
+
+ _repositoryWrapper.SetRepository()
+ .Delete(shiftPlan);
+ await _repositoryWrapper.SaveChangesAsync(cancellationToken);
+
+ return true;
+ }
+}
\ No newline at end of file
diff --git a/Berizco.Repository/Handlers/ShiftPlan/GetShiftPlanQueryHandler.cs b/Berizco.Repository/Handlers/ShiftPlan/GetShiftPlanQueryHandler.cs
new file mode 100644
index 0000000..9c631bb
--- /dev/null
+++ b/Berizco.Repository/Handlers/ShiftPlan/GetShiftPlanQueryHandler.cs
@@ -0,0 +1,22 @@
+namespace Brizco.Repository.Handlers.ShiftPlan;
+
+public class GetShiftPlanQueryHandler : IRequestHandler
+{
+ private readonly IRepositoryWrapper _repositoryWrapper;
+
+ public GetShiftPlanQueryHandler(IRepositoryWrapper repositoryWrapper)
+ {
+ _repositoryWrapper = repositoryWrapper;
+ }
+ public async Task Handle(GetShiftPlanQuery request, CancellationToken cancellationToken)
+ {
+ var shiftPlan = await _repositoryWrapper.SetRepository()
+ .TableNoTracking
+ .Where(s => s.Id == request.Id)
+ .Select(ShiftPlanMapper.ProjectToLDto)
+ .FirstOrDefaultAsync(cancellationToken);
+ if (shiftPlan == null)
+ throw new AppException("Shift not found", ApiResultStatusCode.NotFound);
+ return shiftPlan;
+ }
+}
\ No newline at end of file
diff --git a/Berizco.Repository/Handlers/ShiftPlan/GetShiftPlansQueryHandler.cs b/Berizco.Repository/Handlers/ShiftPlan/GetShiftPlansQueryHandler.cs
new file mode 100644
index 0000000..d8ba3ab
--- /dev/null
+++ b/Berizco.Repository/Handlers/ShiftPlan/GetShiftPlansQueryHandler.cs
@@ -0,0 +1,21 @@
+namespace Brizco.Repository.Handlers.ShiftPlan;
+
+public class GetShiftPlansQueryHandler : IRequestHandler>
+{
+ private readonly IRepositoryWrapper _repositoryWrapper;
+
+ public GetShiftPlansQueryHandler(IRepositoryWrapper repositoryWrapper)
+ {
+ _repositoryWrapper = repositoryWrapper;
+ }
+ public async Task> Handle(GetShiftPlansQuery request, CancellationToken cancellationToken)
+ {
+ var shifts = await _repositoryWrapper.SetRepository().TableNoTracking
+ .OrderByDescending(s => s.CreatedAt)
+ .Skip(request.Page * 15).Take(15)
+ .Select(ShiftPlanMapper.ProjectToSDto)
+ .ToListAsync(cancellationToken);
+
+ return shifts;
+ }
+}
\ No newline at end of file
diff --git a/Berizco.Repository/Handlers/ShiftPlan/UpdateShiftPlanCommandHandler.cs b/Berizco.Repository/Handlers/ShiftPlan/UpdateShiftPlanCommandHandler.cs
new file mode 100644
index 0000000..538fdf3
--- /dev/null
+++ b/Berizco.Repository/Handlers/ShiftPlan/UpdateShiftPlanCommandHandler.cs
@@ -0,0 +1,55 @@
+namespace Brizco.Repository.Handlers.ShiftPlan;
+
+public class UpdateShiftPlanCommandHandler : IRequestHandler
+{
+ private readonly IRepositoryWrapper _repositoryWrapper;
+
+ public UpdateShiftPlanCommandHandler(IRepositoryWrapper repositoryWrapper)
+ {
+ _repositoryWrapper = repositoryWrapper;
+ }
+
+ public async Task Handle(UpdateShiftPlanCommand request, CancellationToken cancellationToken)
+ {
+ var shiftPlan = await _repositoryWrapper.SetRepository()
+ .TableNoTracking.FirstOrDefaultAsync(s => s.Id == request.Id,cancellationToken);
+
+ if (shiftPlan == null)
+ throw new AppException("ShiftPlan not found", ApiResultStatusCode.NotFound);
+
+ var shift = await _repositoryWrapper.SetRepository()
+ .TableNoTracking.FirstOrDefaultAsync(s => s.Id == request.ShiftId, cancellationToken);
+
+ if (shift == null)
+ throw new AppException("Shift not found", ApiResultStatusCode.NotFound);
+
+
+ var newPlan = shift.AddPlan(request.StartAt, request.EndAt);
+ newPlan.Id = request.Id;
+
+
+ var shiftPlanUsers = await _repositoryWrapper.SetRepository()
+ .TableNoTracking
+ .Where(s => s.ShiftPlanId == newPlan.Id)
+ .ToListAsync(cancellationToken);
+
+ foreach (var shiftPlanUser in shiftPlanUsers)
+ {
+ if (request.UserIds.Contains(shiftPlanUser.Id))
+ request.UserIds.Remove(shiftPlanUser.Id);
+ else
+ _repositoryWrapper.SetRepository()
+ .Delete(shiftPlanUser);
+ }
+
+ foreach (var userId in request.UserIds)
+ newPlan.AddUser(userId);
+
+ _repositoryWrapper.SetRepository()
+ .Update(newPlan);
+
+ await _repositoryWrapper.SaveChangesAsync(cancellationToken);
+
+ return true;
+ }
+}
\ No newline at end of file
diff --git a/Berizco.Repository/Handlers/Task/CreateTaskCommandHandler.cs b/Berizco.Repository/Handlers/Task/CreateTaskCommandHandler.cs
index cdc36c8..71a756d 100644
--- a/Berizco.Repository/Handlers/Task/CreateTaskCommandHandler.cs
+++ b/Berizco.Repository/Handlers/Task/CreateTaskCommandHandler.cs
@@ -1,16 +1,21 @@
-using Brizco.Domain.Dtos.LargDtos;
-
-namespace Brizco.Repository.Handlers.Task;
+namespace Brizco.Repository.Handlers.Task;
public class CreateActivityCommandHandler : IRequestHandler
{
private readonly IRepositoryWrapper _repositoryWrapper;
- public CreateActivityCommandHandler(IRepositoryWrapper repositoryWrapper)
+ private readonly ICurrentUserService _currentUserService;
+
+ public CreateActivityCommandHandler(IRepositoryWrapper repositoryWrapper,ICurrentUserService currentUserService)
{
_repositoryWrapper = repositoryWrapper;
+ _currentUserService = currentUserService;
}
public async Task Handle(CreateTaskCommand request, CancellationToken cancellationToken)
{
+ if (_currentUserService.ComplexId == null)
+ throw new AppException("ComplexId is null", ApiResultStatusCode.NotFound);
+ if (!Guid.TryParse(_currentUserService.ComplexId, out Guid complexId))
+ throw new AppException("ComplexId is wrong", ApiResultStatusCode.NotFound);
var task = Domain.Entities.Task.Task
.Create(request.Title,
request.Description,
@@ -22,7 +27,8 @@ public class CreateActivityCommandHandler : IRequestHandler
{
private readonly IRepositoryWrapper _repositoryWrapper;
+ private readonly ICurrentUserService _currentUserService;
- public UpdateActivityCommandHandler(IRepositoryWrapper repositoryWrapper)
+ public UpdateActivityCommandHandler(IRepositoryWrapper repositoryWrapper,ICurrentUserService currentUserService)
{
_repositoryWrapper = repositoryWrapper;
+ _currentUserService = currentUserService;
}
public async Task Handle(UpdateTaskCommand request, CancellationToken cancellationToken)
@@ -16,6 +18,11 @@ public class UpdateActivityCommandHandler : IRequestHandler()
diff --git a/Berizco.Repository/Migrations/20230912124533_init.Designer.cs b/Berizco.Repository/Migrations/20230912124533_init.Designer.cs
deleted file mode 100644
index c4231f3..0000000
--- a/Berizco.Repository/Migrations/20230912124533_init.Designer.cs
+++ /dev/null
@@ -1,871 +0,0 @@
-//
-using System;
-using Brizco.Repository.Models;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-
-#nullable disable
-
-namespace Brizco.Repository.Migrations
-{
- [DbContext(typeof(ApplicationContext))]
- [Migration("20230912124533_init")]
- partial class init
- {
- ///
- protected override void BuildTargetModel(ModelBuilder modelBuilder)
- {
-#pragma warning disable 612, 618
- modelBuilder
- .HasAnnotation("ProductVersion", "7.0.10")
- .HasAnnotation("Relational:MaxIdentifierLength", 63);
-
- NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
-
- modelBuilder.Entity("Brizco.Domain.Entities.ApplicationRole", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("uuid");
-
- b.Property("ConcurrencyStamp")
- .IsConcurrencyToken()
- .HasColumnType("text");
-
- b.Property("Description")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("Name")
- .HasMaxLength(256)
- .HasColumnType("character varying(256)");
-
- b.Property("NormalizedName")
- .HasMaxLength(256)
- .HasColumnType("character varying(256)");
-
- b.HasKey("Id");
-
- b.HasIndex("NormalizedName")
- .IsUnique()
- .HasDatabaseName("RoleNameIndex");
-
- b.ToTable("AspNetRoles", (string)null);
- });
-
- modelBuilder.Entity("Brizco.Domain.Entities.ApplicationUser", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("uuid");
-
- b.Property("AccessFailedCount")
- .HasColumnType("integer");
-
- b.Property("BirthDate")
- .HasColumnType("timestamp without time zone");
-
- b.Property("ConcurrencyStamp")
- .IsConcurrencyToken()
- .HasColumnType("text");
-
- b.Property("Email")
- .HasMaxLength(256)
- .HasColumnType("character varying(256)");
-
- b.Property("EmailConfirmed")
- .HasColumnType("boolean");
-
- b.Property("FirstName")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("Gender")
- .HasColumnType("integer");
-
- b.Property("LastName")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("LockoutEnabled")
- .HasColumnType("boolean");
-
- b.Property("LockoutEnd")
- .HasColumnType("timestamp with time zone");
-
- b.Property("NormalizedEmail")
- .HasMaxLength(256)
- .HasColumnType("character varying(256)");
-
- b.Property("NormalizedUserName")
- .HasMaxLength(256)
- .HasColumnType("character varying(256)");
-
- b.Property("PasswordHash")
- .HasColumnType("text");
-
- b.Property("PhoneNumber")
- .HasColumnType("text");
-
- b.Property("PhoneNumberConfirmed")
- .HasColumnType("boolean");
-
- b.Property("SecurityStamp")
- .HasColumnType("text");
-
- b.Property("TwoFactorEnabled")
- .HasColumnType("boolean");
-
- b.Property("UserName")
- .HasMaxLength(256)
- .HasColumnType("character varying(256)");
-
- b.HasKey("Id");
-
- b.HasIndex("NormalizedEmail")
- .HasDatabaseName("EmailIndex");
-
- b.HasIndex("NormalizedUserName")
- .IsUnique()
- .HasDatabaseName("UserNameIndex");
-
- b.ToTable("AspNetUsers", (string)null);
- });
-
- modelBuilder.Entity("Brizco.Domain.Entities.Complex", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("uuid");
-
- b.Property("Address")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("CreatedAt")
- .HasColumnType("timestamp without time zone");
-
- b.Property("CreatedBy")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("IsRemoved")
- .HasColumnType("boolean");
-
- b.Property("ModifiedAt")
- .HasColumnType("timestamp without time zone");
-
- b.Property("ModifiedBy")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("Name")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("RemovedAt")
- .HasColumnType("timestamp without time zone");
-
- b.Property("RemovedBy")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("SupportPhone")
- .IsRequired()
- .HasColumnType("text");
-
- b.HasKey("Id");
-
- b.ToTable("Complexes");
- });
-
- modelBuilder.Entity("Brizco.Domain.Entities.ComplexUser", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("uuid");
-
- b.Property("ComplexId")
- .HasColumnType("uuid");
-
- b.Property("CreatedAt")
- .HasColumnType("timestamp without time zone");
-
- b.Property("CreatedBy")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("IsRemoved")
- .HasColumnType("boolean");
-
- b.Property("ModifiedAt")
- .HasColumnType("timestamp without time zone");
-
- b.Property("ModifiedBy")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("RemovedAt")
- .HasColumnType("timestamp without time zone");
-
- b.Property("RemovedBy")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("RoleId")
- .HasColumnType("uuid");
-
- b.Property("UserId")
- .HasColumnType("uuid");
-
- b.HasKey("Id");
-
- b.HasIndex("ComplexId");
-
- b.HasIndex("UserId");
-
- b.ToTable("ComplexUsers");
- });
-
- modelBuilder.Entity("Brizco.Domain.Entities.Shift", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("uuid");
-
- b.Property("CreatedAt")
- .HasColumnType("timestamp without time zone");
-
- b.Property("CreatedBy")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("Description")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("EndAt")
- .HasColumnType("interval");
-
- b.Property("IsRemoved")
- .HasColumnType("boolean");
-
- b.Property("ModifiedAt")
- .HasColumnType("timestamp without time zone");
-
- b.Property("ModifiedBy")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("RemovedAt")
- .HasColumnType("timestamp without time zone");
-
- b.Property("RemovedBy")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("StartAt")
- .HasColumnType("interval");
-
- b.Property("Title")
- .IsRequired()
- .HasColumnType("text");
-
- b.HasKey("Id");
-
- b.ToTable("Shifts");
- });
-
- modelBuilder.Entity("Brizco.Domain.Entities.ShiftDay", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("uuid");
-
- b.Property("CreatedAt")
- .HasColumnType("timestamp without time zone");
-
- b.Property("CreatedBy")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("DayOfWeek")
- .HasColumnType("integer");
-
- b.Property("IsRemoved")
- .HasColumnType("boolean");
-
- b.Property("ModifiedAt")
- .HasColumnType("timestamp without time zone");
-
- b.Property("ModifiedBy")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("RemovedAt")
- .HasColumnType("timestamp without time zone");
-
- b.Property("RemovedBy")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("ShiftId")
- .HasColumnType("uuid");
-
- b.HasKey("Id");
-
- b.HasIndex("ShiftId");
-
- b.ToTable("ShiftDays");
- });
-
- modelBuilder.Entity("Brizco.Domain.Entities.ShiftPlan", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("uuid");
-
- b.Property("CreatedAt")
- .HasColumnType("timestamp without time zone");
-
- b.Property("CreatedBy")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("EndAt")
- .HasColumnType("timestamp without time zone");
-
- b.Property("IsRemoved")
- .HasColumnType("boolean");
-
- b.Property("ModifiedAt")
- .HasColumnType("timestamp without time zone");
-
- b.Property("ModifiedBy")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("RemovedAt")
- .HasColumnType("timestamp without time zone");
-
- b.Property("RemovedBy")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("ShiftId")
- .HasColumnType("uuid");
-
- b.Property("StartAt")
- .HasColumnType("timestamp without time zone");
-
- b.HasKey("Id");
-
- b.HasIndex("ShiftId");
-
- b.ToTable("ShiftPlans");
- });
-
- modelBuilder.Entity("Brizco.Domain.Entities.Task", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("uuid");
-
- b.Property("Amount")
- .HasColumnType("integer");
-
- b.Property("AmountType")
- .HasColumnType("integer");
-
- b.Property("CreatedAt")
- .HasColumnType("timestamp without time zone");
-
- b.Property("CreatedBy")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("Description")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("Discriminator")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("HasDisposed")
- .HasColumnType("boolean");
-
- b.Property("IsDisposable")
- .HasColumnType("boolean");
-
- b.Property("IsRelatedToPerson")
- .HasColumnType("boolean");
-
- b.Property("IsRelatedToRole")
- .HasColumnType("boolean");
-
- b.Property("IsRelatedToShift")
- .HasColumnType("boolean");
-
- b.Property("IsRemoved")
- .HasColumnType("boolean");
-
- b.Property("ModifiedAt")
- .HasColumnType("timestamp without time zone");
-
- b.Property("ModifiedBy")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("RemovedAt")
- .HasColumnType("timestamp without time zone");
-
- b.Property("RemovedBy")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("SetFor")
- .HasColumnType("timestamp without time zone");
-
- b.Property("Title")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("Type")
- .HasColumnType("integer");
-
- b.HasKey("Id");
-
- b.ToTable("Tasks");
-
- b.HasDiscriminator("Discriminator").HasValue("Task");
-
- b.UseTphMappingStrategy();
- });
-
- modelBuilder.Entity("Brizco.Domain.Entities.TaskRole", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("uuid");
-
- b.Property("CreatedAt")
- .HasColumnType("timestamp without time zone");
-
- b.Property("CreatedBy")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("IsRemoved")
- .HasColumnType("boolean");
-
- b.Property("ModifiedAt")
- .HasColumnType("timestamp without time zone");
-
- b.Property("ModifiedBy")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("RemovedAt")
- .HasColumnType("timestamp without time zone");
-
- b.Property("RemovedBy")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("RoleId")
- .HasColumnType("uuid");
-
- b.Property("TaskId")
- .HasColumnType("uuid");
-
- b.HasKey("Id");
-
- b.HasIndex("RoleId");
-
- b.HasIndex("TaskId");
-
- b.ToTable("TaskRoles");
- });
-
- modelBuilder.Entity("Brizco.Domain.Entities.TaskShift", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("uuid");
-
- b.Property("CreatedAt")
- .HasColumnType("timestamp without time zone");
-
- b.Property("CreatedBy")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("IsRemoved")
- .HasColumnType("boolean");
-
- b.Property("ModifiedAt")
- .HasColumnType("timestamp without time zone");
-
- b.Property("ModifiedBy")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("RemovedAt")
- .HasColumnType("timestamp without time zone");
-
- b.Property("RemovedBy")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("ShiftId")
- .HasColumnType("uuid");
-
- b.Property("TaskId")
- .HasColumnType("uuid");
-
- b.HasKey("Id");
-
- b.HasIndex("ShiftId");
-
- b.HasIndex("TaskId");
-
- b.ToTable("TaskShifts");
- });
-
- modelBuilder.Entity("Brizco.Domain.Entities.TaskUser", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("uuid");
-
- b.Property("CreatedAt")
- .HasColumnType("timestamp without time zone");
-
- b.Property("CreatedBy")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("IsRemoved")
- .HasColumnType("boolean");
-
- b.Property("ModifiedAt")
- .HasColumnType("timestamp without time zone");
-
- b.Property("ModifiedBy")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("RemovedAt")
- .HasColumnType("timestamp without time zone");
-
- b.Property("RemovedBy")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("TaskId")
- .HasColumnType("uuid");
-
- b.Property("UserId")
- .HasColumnType("uuid");
-
- b.HasKey("Id");
-
- b.HasIndex("TaskId");
-
- b.HasIndex("UserId");
-
- b.ToTable("TaskUsers");
- });
-
- modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("integer");
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("ClaimType")
- .HasColumnType("text");
-
- b.Property("ClaimValue")
- .HasColumnType("text");
-
- b.Property("RoleId")
- .HasColumnType("uuid");
-
- b.HasKey("Id");
-
- b.HasIndex("RoleId");
-
- b.ToTable("AspNetRoleClaims", (string)null);
- });
-
- modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("integer");
-
- NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
-
- b.Property("ClaimType")
- .HasColumnType("text");
-
- b.Property("ClaimValue")
- .HasColumnType("text");
-
- b.Property("UserId")
- .HasColumnType("uuid");
-
- b.HasKey("Id");
-
- b.HasIndex("UserId");
-
- b.ToTable("AspNetUserClaims", (string)null);
- });
-
- modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b =>
- {
- b.Property("LoginProvider")
- .HasColumnType("text");
-
- b.Property("ProviderKey")
- .HasColumnType("text");
-
- b.Property("ProviderDisplayName")
- .HasColumnType("text");
-
- b.Property("UserId")
- .HasColumnType("uuid");
-
- b.HasKey("LoginProvider", "ProviderKey");
-
- b.HasIndex("UserId");
-
- b.ToTable("AspNetUserLogins", (string)null);
- });
-
- modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b =>
- {
- b.Property("UserId")
- .HasColumnType("uuid");
-
- b.Property("RoleId")
- .HasColumnType("uuid");
-
- b.HasKey("UserId", "RoleId");
-
- b.HasIndex("RoleId");
-
- b.ToTable("AspNetUserRoles", (string)null);
- });
-
- modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b =>
- {
- b.Property("UserId")
- .HasColumnType("uuid");
-
- b.Property("LoginProvider")
- .HasColumnType("text");
-
- b.Property("Name")
- .HasColumnType("text");
-
- b.Property("Value")
- .HasColumnType("text");
-
- b.HasKey("UserId", "LoginProvider", "Name");
-
- b.ToTable("AspNetUserTokens", (string)null);
- });
-
- modelBuilder.Entity("Brizco.Domain.Entities.Activity", b =>
- {
- b.HasBaseType("Brizco.Domain.Entities.Task");
-
- b.Property("DoneAt")
- .HasColumnType("timestamp without time zone");
-
- b.Property("PerformanceDescription")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("Status")
- .HasColumnType("integer");
-
- b.HasDiscriminator().HasValue("Activity");
- });
-
- modelBuilder.Entity("Brizco.Domain.Entities.SubTask", b =>
- {
- b.HasBaseType("Brizco.Domain.Entities.Task");
-
- b.HasDiscriminator().HasValue("SubTask");
- });
-
- modelBuilder.Entity("Brizco.Domain.Entities.ComplexUser", b =>
- {
- b.HasOne("Brizco.Domain.Entities.Complex", "Complex")
- .WithMany()
- .HasForeignKey("ComplexId")
- .OnDelete(DeleteBehavior.Restrict)
- .IsRequired();
-
- b.HasOne("Brizco.Domain.Entities.ApplicationUser", "User")
- .WithMany()
- .HasForeignKey("UserId")
- .OnDelete(DeleteBehavior.Restrict)
- .IsRequired();
-
- b.Navigation("Complex");
-
- b.Navigation("User");
- });
-
- modelBuilder.Entity("Brizco.Domain.Entities.ShiftDay", b =>
- {
- b.HasOne("Brizco.Domain.Entities.Shift", "Shift")
- .WithMany()
- .HasForeignKey("ShiftId")
- .OnDelete(DeleteBehavior.Restrict)
- .IsRequired();
-
- b.Navigation("Shift");
- });
-
- modelBuilder.Entity("Brizco.Domain.Entities.ShiftPlan", b =>
- {
- b.HasOne("Brizco.Domain.Entities.Shift", "Shift")
- .WithMany()
- .HasForeignKey("ShiftId")
- .OnDelete(DeleteBehavior.Restrict)
- .IsRequired();
-
- b.Navigation("Shift");
- });
-
- modelBuilder.Entity("Brizco.Domain.Entities.TaskRole", b =>
- {
- b.HasOne("Brizco.Domain.Entities.ApplicationRole", "Role")
- .WithMany()
- .HasForeignKey("RoleId")
- .OnDelete(DeleteBehavior.Restrict)
- .IsRequired();
-
- b.HasOne("Brizco.Domain.Entities.Task", "Task")
- .WithMany("TaskRoles")
- .HasForeignKey("TaskId")
- .OnDelete(DeleteBehavior.Restrict)
- .IsRequired();
-
- b.Navigation("Role");
-
- b.Navigation("Task");
- });
-
- modelBuilder.Entity("Brizco.Domain.Entities.TaskShift", b =>
- {
- b.HasOne("Brizco.Domain.Entities.Shift", "Shift")
- .WithMany()
- .HasForeignKey("ShiftId")
- .OnDelete(DeleteBehavior.Restrict)
- .IsRequired();
-
- b.HasOne("Brizco.Domain.Entities.Task", "Task")
- .WithMany("TaskShifts")
- .HasForeignKey("TaskId")
- .OnDelete(DeleteBehavior.Restrict)
- .IsRequired();
-
- b.Navigation("Shift");
-
- b.Navigation("Task");
- });
-
- modelBuilder.Entity("Brizco.Domain.Entities.TaskUser", b =>
- {
- b.HasOne("Brizco.Domain.Entities.Task", "Task")
- .WithMany("TaskUsers")
- .HasForeignKey("TaskId")
- .OnDelete(DeleteBehavior.Restrict)
- .IsRequired();
-
- b.HasOne("Brizco.Domain.Entities.ApplicationUser", "User")
- .WithMany()
- .HasForeignKey("UserId")
- .OnDelete(DeleteBehavior.Restrict)
- .IsRequired();
-
- b.Navigation("Task");
-
- b.Navigation("User");
- });
-
- modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b =>
- {
- b.HasOne("Brizco.Domain.Entities.ApplicationRole", null)
- .WithMany()
- .HasForeignKey("RoleId")
- .OnDelete(DeleteBehavior.Restrict)
- .IsRequired();
- });
-
- modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b =>
- {
- b.HasOne("Brizco.Domain.Entities.ApplicationUser", null)
- .WithMany()
- .HasForeignKey("UserId")
- .OnDelete(DeleteBehavior.Restrict)
- .IsRequired();
- });
-
- modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b =>
- {
- b.HasOne("Brizco.Domain.Entities.ApplicationUser", null)
- .WithMany()
- .HasForeignKey("UserId")
- .OnDelete(DeleteBehavior.Restrict)
- .IsRequired();
- });
-
- modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b =>
- {
- b.HasOne("Brizco.Domain.Entities.ApplicationRole", null)
- .WithMany()
- .HasForeignKey("RoleId")
- .OnDelete(DeleteBehavior.Restrict)
- .IsRequired();
-
- b.HasOne("Brizco.Domain.Entities.ApplicationUser", null)
- .WithMany()
- .HasForeignKey("UserId")
- .OnDelete(DeleteBehavior.Restrict)
- .IsRequired();
- });
-
- modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b =>
- {
- b.HasOne("Brizco.Domain.Entities.ApplicationUser", null)
- .WithMany()
- .HasForeignKey("UserId")
- .OnDelete(DeleteBehavior.Restrict)
- .IsRequired();
- });
-
- modelBuilder.Entity("Brizco.Domain.Entities.Task", b =>
- {
- b.Navigation("TaskRoles");
-
- b.Navigation("TaskShifts");
-
- b.Navigation("TaskUsers");
- });
-#pragma warning restore 612, 618
- }
- }
-}
diff --git a/Berizco.Repository/Migrations/20230912132807_addShiftPlanUser.Designer.cs b/Berizco.Repository/Migrations/20230912132807_addShiftPlanUser.Designer.cs
deleted file mode 100644
index 474d31e..0000000
--- a/Berizco.Repository/Migrations/20230912132807_addShiftPlanUser.Designer.cs
+++ /dev/null
@@ -1,935 +0,0 @@
-//
-using System;
-using Brizco.Repository.Models;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
-
-#nullable disable
-
-namespace Brizco.Repository.Migrations
-{
- [DbContext(typeof(ApplicationContext))]
- [Migration("20230912132807_addShiftPlanUser")]
- partial class addShiftPlanUser
- {
- ///
- protected override void BuildTargetModel(ModelBuilder modelBuilder)
- {
-#pragma warning disable 612, 618
- modelBuilder
- .HasAnnotation("ProductVersion", "7.0.10")
- .HasAnnotation("Relational:MaxIdentifierLength", 63);
-
- NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
-
- modelBuilder.Entity("Brizco.Domain.Entities.ApplicationRole", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("uuid");
-
- b.Property("ConcurrencyStamp")
- .IsConcurrencyToken()
- .HasColumnType("text");
-
- b.Property("Description")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("Name")
- .HasMaxLength(256)
- .HasColumnType("character varying(256)");
-
- b.Property("NormalizedName")
- .HasMaxLength(256)
- .HasColumnType("character varying(256)");
-
- b.HasKey("Id");
-
- b.HasIndex("NormalizedName")
- .IsUnique()
- .HasDatabaseName("RoleNameIndex");
-
- b.ToTable("AspNetRoles", (string)null);
- });
-
- modelBuilder.Entity("Brizco.Domain.Entities.ApplicationUser", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("uuid");
-
- b.Property("AccessFailedCount")
- .HasColumnType("integer");
-
- b.Property("BirthDate")
- .HasColumnType("timestamp without time zone");
-
- b.Property("ConcurrencyStamp")
- .IsConcurrencyToken()
- .HasColumnType("text");
-
- b.Property("Email")
- .HasMaxLength(256)
- .HasColumnType("character varying(256)");
-
- b.Property("EmailConfirmed")
- .HasColumnType("boolean");
-
- b.Property("FirstName")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("Gender")
- .HasColumnType("integer");
-
- b.Property("LastName")
- .IsRequired()
- .HasColumnType("text");
-
- b.Property("LockoutEnabled")
- .HasColumnType("boolean");
-
- b.Property("LockoutEnd")
- .HasColumnType("timestamp with time zone");
-
- b.Property("NormalizedEmail")
- .HasMaxLength(256)
- .HasColumnType("character varying(256)");
-
- b.Property("NormalizedUserName")
- .HasMaxLength(256)
- .HasColumnType("character varying(256)");
-
- b.Property("PasswordHash")
- .HasColumnType("text");
-
- b.Property("PhoneNumber")
- .HasColumnType("text");
-
- b.Property