diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json
new file mode 100644
index 0000000..0c61f2d
--- /dev/null
+++ b/.config/dotnet-tools.json
@@ -0,0 +1,12 @@
+{
+ "version": 1,
+ "isRoot": true,
+ "tools": {
+ "mapster.tool": {
+ "version": "8.3.0",
+ "commands": [
+ "dotnet-mapster"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/Berizco.Api/Brizco.Api.csproj b/Berizco.Api/Brizco.Api.csproj
index 876110f..8604108 100644
--- a/Berizco.Api/Brizco.Api.csproj
+++ b/Berizco.Api/Brizco.Api.csproj
@@ -57,7 +57,8 @@
-
+
+
diff --git a/Berizco.Api/Controllers/ShiftController.cs b/Berizco.Api/Controllers/ShiftController.cs
index 74289d2..5bd86ac 100644
--- a/Berizco.Api/Controllers/ShiftController.cs
+++ b/Berizco.Api/Controllers/ShiftController.cs
@@ -1,6 +1,4 @@
-using MediatR;
-
-namespace Brizco.Api.Controllers;
+namespace Brizco.Api.Controllers;
public class ShiftController : ICarterModule
{
public ShiftController()
@@ -11,11 +9,11 @@ public class ShiftController : ICarterModule
var group = app.NewVersionedApi("Shift").MapGroup($"api/shift");
group.MapGet("", GetAllAsync)
- .WithDisplayName("GetAll")
+ .WithDisplayName("GetAllShift")
.HasApiVersion(1.0);
group.MapGet("{id}", GetAsync)
- .WithName("GetOne")
+ .WithDisplayName("GetOneShift")
.HasApiVersion(1.0);
group.MapPost("", Post)
@@ -30,11 +28,11 @@ public class ShiftController : ICarterModule
// GET:Get All Entity
public async Task GetAllAsync(ISender sender, CancellationToken cancellationToken)
- => TypedResults.Ok(await sender.Send(Activator.CreateInstance(), cancellationToken));
+ => TypedResults.Ok(await sender.Send(new GetShiftsQuery(), cancellationToken));
// GET:Get An Entity By Id
public async Task GetAsync(Guid id, ISender sender, CancellationToken cancellationToken)
- => TypedResults.Ok(await sender.Send(Activator.CreateInstance()));
+ => TypedResults.Ok(await sender.Send(new GetShiftQuery(id)));
// POST:Create Entity
public async Task Post([FromBody] CreateShiftCommand ent, ISender mediator, CancellationToken cancellationToken)
diff --git a/Berizco.Api/Controllers/TaskController.cs b/Berizco.Api/Controllers/TaskController.cs
new file mode 100644
index 0000000..16e65ee
--- /dev/null
+++ b/Berizco.Api/Controllers/TaskController.cs
@@ -0,0 +1,51 @@
+namespace Brizco.Api.Controllers;
+
+public class TaskController : ICarterModule
+{
+ public TaskController()
+ {
+ }
+ public virtual void AddRoutes(IEndpointRouteBuilder app)
+ {
+ var group = app.NewVersionedApi("Task").MapGroup($"api/task");
+
+ group.MapGet("", GetAllAsync)
+ .WithDisplayName("GetAllTask")
+ .HasApiVersion(1.0);
+
+ group.MapGet("{id}", GetAsync)
+ .WithDisplayName("GetOneTask")
+ .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(ISender sender, CancellationToken cancellationToken)
+ => TypedResults.Ok(await sender.Send(new GetTasksQuery(), cancellationToken));
+
+ // GET:Get An Entity By Id
+ public async Task GetAsync(Guid id, ISender sender, CancellationToken cancellationToken)
+ => TypedResults.Ok(await sender.Send(new GetTaskQuery(id)));
+
+ // POST:Create Entity
+ public async Task Post([FromBody] CreateTaskCommand ent, ISender mediator, CancellationToken cancellationToken)
+ => TypedResults.Ok(await mediator.Send(ent, cancellationToken));
+
+ // PUT:Update Entity
+ public async Task Put([FromBody] UpdateTaskCommand 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 DeleteTaskCommand(id), cancellationToken));
+
+}
+
diff --git a/Berizco.Repository/Brizco.Repository.csproj b/Berizco.Repository/Brizco.Repository.csproj
index 5f35afe..65f38ea 100644
--- a/Berizco.Repository/Brizco.Repository.csproj
+++ b/Berizco.Repository/Brizco.Repository.csproj
@@ -27,7 +27,6 @@
-
@@ -41,9 +40,10 @@
+
+
-
@@ -66,5 +66,6 @@
+
diff --git a/Berizco.Repository/Handlers/Activity/CreateActivityCommandHandler.cs b/Berizco.Repository/Handlers/Activity/CreateActivityCommandHandler.cs
new file mode 100644
index 0000000..f94fdc9
--- /dev/null
+++ b/Berizco.Repository/Handlers/Activity/CreateActivityCommandHandler.cs
@@ -0,0 +1,57 @@
+using Brizco.Domain.Dtos.LargDtos;
+
+namespace Brizco.Repository.Handlers.Activity;
+
+public class CreateActivityCommandHandler : IRequestHandler
+{
+ private readonly IRepositoryWrapper _repositoryWrapper;
+ public CreateActivityCommandHandler(IRepositoryWrapper repositoryWrapper)
+ {
+ _repositoryWrapper = repositoryWrapper;
+ }
+
+ public async Task Handle(CreateActivityCommand request, CancellationToken cancellationToken)
+ {
+ var task = 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);
+
+ if (task.IsRelatedToPerson)
+ {
+ if (request.Users.Count == 0)
+ throw new AppException("اگر فعالیت برای یک فرد انتخاب شده باشد باید لیست افراد را ارسال نمایید");
+ task.AddUser(request.Users.ToArray());
+ }
+
+ if (task.IsRelatedToRole)
+ {
+ if (request.Roles.Count == 0)
+ throw new AppException("اگر فعالیت برای یک گروه نقش انتخاب شده باشد باید لیست نقش ها را ارسال نمایید");
+ task.AddShift(request.Roles.ToArray());
+ }
+
+ if (task.IsRelatedToShift)
+ {
+ if (request.Shifts.Count == 0)
+ throw new AppException("اگر فعالیت برای یک شیفت انتخاب شده باشد باید لیست شیفت ها را ارسال نمایید");
+ task.AddRole(request.Shifts.ToArray());
+ }
+
+ _repositoryWrapper.SetRepository().Add(task);
+ await _repositoryWrapper.SaveChangesAsync(cancellationToken);
+ return task.AdaptToLDto();
+ }
+}
\ No newline at end of file
diff --git a/Berizco.Repository/Handlers/Activity/DeleteActivityCommandHandler.cs b/Berizco.Repository/Handlers/Activity/DeleteActivityCommandHandler.cs
new file mode 100644
index 0000000..3800b33
--- /dev/null
+++ b/Berizco.Repository/Handlers/Activity/DeleteActivityCommandHandler.cs
@@ -0,0 +1,24 @@
+namespace Brizco.Repository.Handlers.Activity;
+
+public class DeleteActivityCommandHandler : IRequestHandler
+{
+ private readonly IRepositoryWrapper _repositoryWrapper;
+
+ public DeleteActivityCommandHandler(IRepositoryWrapper repositoryWrapper)
+ {
+ _repositoryWrapper = repositoryWrapper;
+ }
+ public async Task Handle(DeleteActivityCommand 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/Activity/GetActivitiesQueryHandler.cs b/Berizco.Repository/Handlers/Activity/GetActivitiesQueryHandler.cs
new file mode 100644
index 0000000..284384f
--- /dev/null
+++ b/Berizco.Repository/Handlers/Activity/GetActivitiesQueryHandler.cs
@@ -0,0 +1,21 @@
+namespace Brizco.Repository.Handlers.Activity;
+
+public class GetActivitiesQueryHandler : IRequestHandler>
+{
+ private readonly IRepositoryWrapper _repositoryWrapper;
+
+ public GetActivitiesQueryHandler(IRepositoryWrapper repositoryWrapper)
+ {
+ _repositoryWrapper = repositoryWrapper;
+ }
+ public async Task> Handle(GetActivitiesQuery request, CancellationToken cancellationToken)
+ {
+ var tasks = await _repositoryWrapper.SetRepository().TableNoTracking
+ .OrderByDescending(s => s.CreatedAt)
+ .Skip(request.page * 15).Take(15)
+ .Select(ActivityMapper.ProjectToSDto)
+ .ToListAsync(cancellationToken);
+
+ return tasks;
+ }
+}
\ No newline at end of file
diff --git a/Berizco.Repository/Handlers/Activity/GetActivityQueryHandler.cs b/Berizco.Repository/Handlers/Activity/GetActivityQueryHandler.cs
new file mode 100644
index 0000000..9293b98
--- /dev/null
+++ b/Berizco.Repository/Handlers/Activity/GetActivityQueryHandler.cs
@@ -0,0 +1,25 @@
+using Brizco.Domain.Dtos.LargDtos;
+
+namespace Brizco.Repository.Handlers.Activity;
+
+public class GetActivityQueryHandler : IRequestHandler
+{
+ private readonly IRepositoryWrapper _repositoryWrapper;
+
+ public GetActivityQueryHandler(IRepositoryWrapper repositoryWrapper)
+ {
+ _repositoryWrapper = repositoryWrapper;
+ }
+
+ public async Task Handle(GetActivityQuery request, CancellationToken cancellationToken)
+ {
+ var task = await _repositoryWrapper.SetRepository()
+ .TableNoTracking
+ .Where(s => s.Id == request.id)
+ .Select(ActivityMapper.ProjectToLDto)
+ .FirstOrDefaultAsync(cancellationToken);
+ if (task == null)
+ throw new AppException("Task not found", ApiResultStatusCode.NotFound);
+ return task;
+ }
+}
\ No newline at end of file
diff --git a/Berizco.Repository/Handlers/Activity/UpdateActivityCommandHandler.cs b/Berizco.Repository/Handlers/Activity/UpdateActivityCommandHandler.cs
new file mode 100644
index 0000000..519021a
--- /dev/null
+++ b/Berizco.Repository/Handlers/Activity/UpdateActivityCommandHandler.cs
@@ -0,0 +1,43 @@
+namespace Brizco.Repository.Handlers.Activity;
+
+public class UpdateActivityCommandHandler : IRequestHandler
+{
+ private readonly IRepositoryWrapper _repositoryWrapper;
+
+ public UpdateActivityCommandHandler(IRepositoryWrapper repositoryWrapper)
+ {
+ _repositoryWrapper = repositoryWrapper;
+ }
+
+ 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);
+
+ 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);
+
+ 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 c1ca70b..ca3a47a 100644
--- a/Berizco.Repository/Handlers/Shift/CreateShiftCommandHandler.cs
+++ b/Berizco.Repository/Handlers/Shift/CreateShiftCommandHandler.cs
@@ -1,6 +1,6 @@
namespace Brizco.Repository.Handlers.Shift;
-public class CreateShiftCommandHandler : IRequestHandler
+public class CreateShiftCommandHandler : IRequestHandler
{
private readonly IRepositoryWrapper _repositoryWrapper;
public CreateShiftCommandHandler(IRepositoryWrapper repositoryWrapper)
@@ -15,7 +15,7 @@ public class CreateShiftCommandHandler : IRequestHandlershift.SetDay(d));
+ request.DayOfWeeks.ForEach(d => shift.SetDay(d));
_repositoryWrapper.SetRepository().Add(shift);
await _repositoryWrapper.SaveChangesAsync(cancellationToken);
diff --git a/Berizco.Repository/Handlers/Shift/DeleteShiftCommandHandler.cs b/Berizco.Repository/Handlers/Shift/DeleteShiftCommandHandler.cs
new file mode 100644
index 0000000..e4622cd
--- /dev/null
+++ b/Berizco.Repository/Handlers/Shift/DeleteShiftCommandHandler.cs
@@ -0,0 +1,24 @@
+namespace Brizco.Repository.Handlers.Shift;
+
+public class DeleteShiftCommandHandler : IRequestHandler
+{
+ private readonly IRepositoryWrapper _repositoryWrapper;
+
+ public DeleteShiftCommandHandler(IRepositoryWrapper repositoryWrapper)
+ {
+ _repositoryWrapper = repositoryWrapper;
+ }
+ public async Task Handle(DeleteShiftCommand request, CancellationToken cancellationToken)
+ {
+ var shift = await _repositoryWrapper.SetRepository()
+ .TableNoTracking
+ .FirstOrDefaultAsync(s => s.Id == request.id, cancellationToken);
+ if (shift == null)
+ throw new AppException("Shift not found", ApiResultStatusCode.NotFound);
+ _repositoryWrapper.SetRepository()
+ .Delete(shift);
+
+ await _repositoryWrapper.SaveChangesAsync(cancellationToken);
+ return true;
+ }
+}
\ No newline at end of file
diff --git a/Berizco.Repository/Handlers/Shift/GetShiftQueryHandler.cs b/Berizco.Repository/Handlers/Shift/GetShiftQueryHandler.cs
new file mode 100644
index 0000000..6f44db2
--- /dev/null
+++ b/Berizco.Repository/Handlers/Shift/GetShiftQueryHandler.cs
@@ -0,0 +1,22 @@
+namespace Brizco.Repository.Handlers.Shift;
+
+public class GetShiftQueryHandler : IRequestHandler
+{
+ private readonly IRepositoryWrapper _repositoryWrapper;
+
+ public GetShiftQueryHandler(IRepositoryWrapper repositoryWrapper)
+ {
+ _repositoryWrapper = repositoryWrapper;
+ }
+ public async Task Handle(GetShiftQuery request, CancellationToken cancellationToken)
+ {
+ var shift = await _repositoryWrapper.SetRepository()
+ .TableNoTracking
+ .Where(s => s.Id == request.id)
+ .Select(ShiftMapper.ProjectToSDto)
+ .FirstOrDefaultAsync(cancellationToken);
+ if (shift == null)
+ throw new AppException("Shift not found", ApiResultStatusCode.NotFound);
+ return shift;
+ }
+}
\ No newline at end of file
diff --git a/Berizco.Repository/Handlers/Shift/GetShiftsQueryHandler.cs b/Berizco.Repository/Handlers/Shift/GetShiftsQueryHandler.cs
index 5c0c2ce..5e10aba 100644
--- a/Berizco.Repository/Handlers/Shift/GetShiftsQueryHandler.cs
+++ b/Berizco.Repository/Handlers/Shift/GetShiftsQueryHandler.cs
@@ -1,6 +1,6 @@
namespace Brizco.Repository.Handlers.Shift;
-public class GetShiftsQueryHandler : IRequestHandler>
+public class GetShiftsQueryHandler : IRequestHandler>
{
private readonly IRepositoryWrapper _repositoryWrapper;
@@ -11,8 +11,9 @@ public class GetShiftsQueryHandler : IRequestHandler> Handle(GetShiftsQuery request, CancellationToken cancellationToken)
{
var shifts = await _repositoryWrapper.SetRepository().TableNoTracking
- .Skip(request.page * 15).Take(15)
.OrderByDescending(s => s.CreatedAt)
+ .Skip(request.page * 15).Take(15)
+ .Select(ShiftMapper.ProjectToSDto)
.ToListAsync(cancellationToken);
return shifts;
diff --git a/Berizco.Repository/Handlers/Shift/UpdateShiftCommandHandler.cs b/Berizco.Repository/Handlers/Shift/UpdateShiftCommandHandler.cs
new file mode 100644
index 0000000..13138aa
--- /dev/null
+++ b/Berizco.Repository/Handlers/Shift/UpdateShiftCommandHandler.cs
@@ -0,0 +1,27 @@
+namespace Brizco.Repository.Handlers.Shift;
+
+public class UpdateShiftCommandHandler : IRequestHandler
+{
+ private readonly IRepositoryWrapper _repositoryWrapper;
+
+ public UpdateShiftCommandHandler(IRepositoryWrapper repositoryWrapper)
+ {
+ _repositoryWrapper = repositoryWrapper;
+ }
+
+ public async Task Handle(UpdateShiftCommand request, CancellationToken cancellationToken)
+ {
+ var shift = await _repositoryWrapper.SetRepository()
+ .TableNoTracking.FirstOrDefaultAsync(s => s.Id == request.id);
+ if (shift == null)
+ throw new AppException("Shift not found", ApiResultStatusCode.NotFound);
+
+ var newShift = Domain.Entities.Shift.Shift.Create(request.Title, request.Description, request.StartAt, request.EndAt);
+ newShift.Id = request.id;
+ _repositoryWrapper.SetRepository()
+ .Update(newShift);
+ 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
new file mode 100644
index 0000000..cdc36c8
--- /dev/null
+++ b/Berizco.Repository/Handlers/Task/CreateTaskCommandHandler.cs
@@ -0,0 +1,52 @@
+using Brizco.Domain.Dtos.LargDtos;
+
+namespace Brizco.Repository.Handlers.Task;
+
+public class CreateActivityCommandHandler : IRequestHandler
+{
+ private readonly IRepositoryWrapper _repositoryWrapper;
+ public CreateActivityCommandHandler(IRepositoryWrapper repositoryWrapper)
+ {
+ _repositoryWrapper = repositoryWrapper;
+ }
+ public async Task Handle(CreateTaskCommand request, CancellationToken cancellationToken)
+ {
+ var task = Domain.Entities.Task.Task
+ .Create(request.Title,
+ request.Description,
+ request.Type,
+ request.IsRelatedToShift,
+ request.IsRelatedToRole,
+ request.IsRelatedToPerson,
+ request.IsDisposable,
+ request.SetFor,
+ request.HasDisposed,
+ request.Amount,
+ request.AmountType);
+
+ if (task.IsRelatedToPerson)
+ {
+ if (request.Users.Count == 0)
+ throw new AppException("اگر فعالیت برای یک فرد انتخاب شده باشد باید لیست افراد را ارسال نمایید");
+ task.AddUser(request.Users.ToArray());
+ }
+
+ if (task.IsRelatedToRole)
+ {
+ if (request.Roles.Count == 0)
+ throw new AppException("اگر فعالیت برای یک گروه نقش انتخاب شده باشد باید لیست نقش ها را ارسال نمایید");
+ task.AddShift(request.Roles.ToArray());
+ }
+
+ if (task.IsRelatedToShift)
+ {
+ if (request.Shifts.Count == 0)
+ throw new AppException("اگر فعالیت برای یک شیفت انتخاب شده باشد باید لیست شیفت ها را ارسال نمایید");
+ task.AddRole(request.Shifts.ToArray());
+ }
+
+ _repositoryWrapper.SetRepository().Add(task);
+ await _repositoryWrapper.SaveChangesAsync(cancellationToken);
+ return task.AdaptToLDto();
+ }
+}
\ No newline at end of file
diff --git a/Berizco.Repository/Handlers/Task/DeleteTaskCommandHandler.cs b/Berizco.Repository/Handlers/Task/DeleteTaskCommandHandler.cs
new file mode 100644
index 0000000..fcaaa3e
--- /dev/null
+++ b/Berizco.Repository/Handlers/Task/DeleteTaskCommandHandler.cs
@@ -0,0 +1,24 @@
+namespace Brizco.Repository.Handlers.Task;
+
+public class DeleteActivityCommandHandler : IRequestHandler
+{
+ private readonly IRepositoryWrapper _repositoryWrapper;
+
+ public DeleteActivityCommandHandler(IRepositoryWrapper repositoryWrapper)
+ {
+ _repositoryWrapper = repositoryWrapper;
+ }
+ public async Task Handle(DeleteTaskCommand 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/Task/GetTaskQueryHandler.cs b/Berizco.Repository/Handlers/Task/GetTaskQueryHandler.cs
new file mode 100644
index 0000000..cd7e3af
--- /dev/null
+++ b/Berizco.Repository/Handlers/Task/GetTaskQueryHandler.cs
@@ -0,0 +1,25 @@
+using Brizco.Domain.Dtos.LargDtos;
+
+namespace Brizco.Repository.Handlers.Task;
+
+public class GetActivityQueryHandler : IRequestHandler
+{
+ private readonly IRepositoryWrapper _repositoryWrapper;
+
+ public GetActivityQueryHandler(IRepositoryWrapper repositoryWrapper)
+ {
+ _repositoryWrapper = repositoryWrapper;
+ }
+
+ public async Task Handle(GetTaskQuery request, CancellationToken cancellationToken)
+ {
+ var task = await _repositoryWrapper.SetRepository()
+ .TableNoTracking
+ .Where(s => s.Id == request.id)
+ .Select(TaskMapper.ProjectToLDto)
+ .FirstOrDefaultAsync(cancellationToken);
+ if (task == null)
+ throw new AppException("Task not found", ApiResultStatusCode.NotFound);
+ return task;
+ }
+}
\ No newline at end of file
diff --git a/Berizco.Repository/Handlers/Task/GetTasksQueryHandler.cs b/Berizco.Repository/Handlers/Task/GetTasksQueryHandler.cs
new file mode 100644
index 0000000..9c59add
--- /dev/null
+++ b/Berizco.Repository/Handlers/Task/GetTasksQueryHandler.cs
@@ -0,0 +1,21 @@
+namespace Brizco.Repository.Handlers.Task;
+
+public class GetActivitiesQueryHandler : IRequestHandler>
+{
+ private readonly IRepositoryWrapper _repositoryWrapper;
+
+ public GetActivitiesQueryHandler(IRepositoryWrapper repositoryWrapper)
+ {
+ _repositoryWrapper = repositoryWrapper;
+ }
+ public async Task> Handle(GetTasksQuery request, CancellationToken cancellationToken)
+ {
+ var tasks = await _repositoryWrapper.SetRepository().TableNoTracking
+ .OrderByDescending(s => s.CreatedAt)
+ .Skip(request.page * 15).Take(15)
+ .Select(TaskMapper.ProjectToSDto)
+ .ToListAsync(cancellationToken);
+
+ return tasks;
+ }
+}
\ No newline at end of file
diff --git a/Berizco.Repository/Handlers/Task/UpdateTaskCommandHandler.cs b/Berizco.Repository/Handlers/Task/UpdateTaskCommandHandler.cs
new file mode 100644
index 0000000..457161b
--- /dev/null
+++ b/Berizco.Repository/Handlers/Task/UpdateTaskCommandHandler.cs
@@ -0,0 +1,38 @@
+namespace Brizco.Repository.Handlers.Task;
+
+public class UpdateActivityCommandHandler : IRequestHandler
+{
+ private readonly IRepositoryWrapper _repositoryWrapper;
+
+ public UpdateActivityCommandHandler(IRepositoryWrapper repositoryWrapper)
+ {
+ _repositoryWrapper = repositoryWrapper;
+ }
+
+ public async Task Handle(UpdateTaskCommand 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);
+
+ var newTask = Domain.Entities.Task.Task.Create(request.Title,
+ request.Description,
+ request.Type,
+ request.IsRelatedToShift,
+ request.IsRelatedToRole,
+ request.IsRelatedToPerson,
+ request.IsDisposable,
+ request.SetFor,
+ request.HasDisposed,
+ request.Amount,
+ request.AmountType);
+ 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/Migrations/20230917141849_editTask.Designer.cs b/Berizco.Repository/Migrations/20230917141849_editTask.Designer.cs
new file mode 100644
index 0000000..e12d1c5
--- /dev/null
+++ b/Berizco.Repository/Migrations/20230917141849_editTask.Designer.cs
@@ -0,0 +1,932 @@
+//
+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("20230917141849_editTask")]
+ partial class editTask
+ {
+ ///
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("ProductVersion", "7.0.11")
+ .HasAnnotation("Relational:MaxIdentifierLength", 63);
+
+ NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
+
+ modelBuilder.Entity("Brizco.Domain.Entities.Complex.Complex", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("Address")
+ .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")
+ .HasColumnType("text");
+
+ b.Property("RemovedAt")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("RemovedBy")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("SupportPhone")
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.ToTable("Complexes");
+ });
+
+ modelBuilder.Entity("Brizco.Domain.Entities.Complex.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.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")
+ .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")
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.ToTable("Shifts");
+ });
+
+ modelBuilder.Entity("Brizco.Domain.Entities.Shift.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.Shift.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.Shift.ShiftPlanUser", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("ApplicationUserId")
+ .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("ShiftPlanId")
+ .HasColumnType("uuid");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ApplicationUserId");
+
+ b.HasIndex("ShiftPlanId");
+
+ b.ToTable("ShiftPlanUsers");
+ });
+
+ modelBuilder.Entity("Brizco.Domain.Entities.Task.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")
+ .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")
+ .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.Task.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.Task.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.Task.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("Brizco.Domain.Entities.User.ApplicationRole", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken()
+ .HasColumnType("text");
+
+ b.Property("Description")
+ .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.User.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")
+ .HasColumnType("text");
+
+ b.Property("Gender")
+ .HasColumnType("integer");
+
+ b.Property("LastName")
+ .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("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.Task.Activity", b =>
+ {
+ b.HasBaseType("Brizco.Domain.Entities.Task.Task");
+
+ b.Property("DoneAt")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("IsDone")
+ .HasColumnType("boolean");
+
+ b.Property("PerformanceDescription")
+ .HasColumnType("text");
+
+ b.Property("Status")
+ .HasColumnType("integer");
+
+ b.HasDiscriminator().HasValue("Activity");
+ });
+
+ modelBuilder.Entity("Brizco.Domain.Entities.Complex.ComplexUser", b =>
+ {
+ b.HasOne("Brizco.Domain.Entities.Complex.Complex", "Complex")
+ .WithMany()
+ .HasForeignKey("ComplexId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.HasOne("Brizco.Domain.Entities.User.ApplicationUser", "User")
+ .WithMany()
+ .HasForeignKey("UserId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.Navigation("Complex");
+
+ b.Navigation("User");
+ });
+
+ modelBuilder.Entity("Brizco.Domain.Entities.Shift.ShiftDay", b =>
+ {
+ b.HasOne("Brizco.Domain.Entities.Shift.Shift", "Shift")
+ .WithMany("Days")
+ .HasForeignKey("ShiftId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.Navigation("Shift");
+ });
+
+ modelBuilder.Entity("Brizco.Domain.Entities.Shift.ShiftPlan", b =>
+ {
+ b.HasOne("Brizco.Domain.Entities.Shift.Shift", "Shift")
+ .WithMany("Plans")
+ .HasForeignKey("ShiftId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.Navigation("Shift");
+ });
+
+ modelBuilder.Entity("Brizco.Domain.Entities.Shift.ShiftPlanUser", b =>
+ {
+ b.HasOne("Brizco.Domain.Entities.User.ApplicationUser", "ApplicationUser")
+ .WithMany()
+ .HasForeignKey("ApplicationUserId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.HasOne("Brizco.Domain.Entities.Shift.ShiftPlan", "ShiftPlan")
+ .WithMany("Users")
+ .HasForeignKey("ShiftPlanId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.Navigation("ApplicationUser");
+
+ b.Navigation("ShiftPlan");
+ });
+
+ modelBuilder.Entity("Brizco.Domain.Entities.Task.TaskRole", b =>
+ {
+ b.HasOne("Brizco.Domain.Entities.User.ApplicationRole", "Role")
+ .WithMany()
+ .HasForeignKey("RoleId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.HasOne("Brizco.Domain.Entities.Task.Task", "Task")
+ .WithMany("Roles")
+ .HasForeignKey("TaskId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.Navigation("Role");
+
+ b.Navigation("Task");
+ });
+
+ modelBuilder.Entity("Brizco.Domain.Entities.Task.TaskShift", b =>
+ {
+ b.HasOne("Brizco.Domain.Entities.Shift.Shift", "Shift")
+ .WithMany()
+ .HasForeignKey("ShiftId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.HasOne("Brizco.Domain.Entities.Task.Task", "Task")
+ .WithMany("Shifts")
+ .HasForeignKey("TaskId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.Navigation("Shift");
+
+ b.Navigation("Task");
+ });
+
+ modelBuilder.Entity("Brizco.Domain.Entities.Task.TaskUser", b =>
+ {
+ b.HasOne("Brizco.Domain.Entities.Task.Task", "Task")
+ .WithMany("Users")
+ .HasForeignKey("TaskId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.HasOne("Brizco.Domain.Entities.User.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.User.ApplicationRole", null)
+ .WithMany()
+ .HasForeignKey("RoleId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b =>
+ {
+ b.HasOne("Brizco.Domain.Entities.User.ApplicationUser", null)
+ .WithMany()
+ .HasForeignKey("UserId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b =>
+ {
+ b.HasOne("Brizco.Domain.Entities.User.ApplicationUser", null)
+ .WithMany()
+ .HasForeignKey("UserId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b =>
+ {
+ b.HasOne("Brizco.Domain.Entities.User.ApplicationRole", null)
+ .WithMany()
+ .HasForeignKey("RoleId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.HasOne("Brizco.Domain.Entities.User.ApplicationUser", null)
+ .WithMany()
+ .HasForeignKey("UserId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b =>
+ {
+ b.HasOne("Brizco.Domain.Entities.User.ApplicationUser", null)
+ .WithMany()
+ .HasForeignKey("UserId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+ });
+
+ modelBuilder.Entity("Brizco.Domain.Entities.Shift.Shift", b =>
+ {
+ b.Navigation("Days");
+
+ b.Navigation("Plans");
+ });
+
+ modelBuilder.Entity("Brizco.Domain.Entities.Shift.ShiftPlan", b =>
+ {
+ b.Navigation("Users");
+ });
+
+ modelBuilder.Entity("Brizco.Domain.Entities.Task.Task", b =>
+ {
+ b.Navigation("Roles");
+
+ b.Navigation("Shifts");
+
+ b.Navigation("Users");
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/Berizco.Repository/Migrations/20230917141849_editTask.cs b/Berizco.Repository/Migrations/20230917141849_editTask.cs
new file mode 100644
index 0000000..be93d01
--- /dev/null
+++ b/Berizco.Repository/Migrations/20230917141849_editTask.cs
@@ -0,0 +1,208 @@
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace Brizco.Repository.Migrations
+{
+ ///
+ public partial class editTask : Migration
+ {
+ ///
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.AlterColumn(
+ name: "Title",
+ table: "Tasks",
+ type: "text",
+ nullable: true,
+ oldClrType: typeof(string),
+ oldType: "text");
+
+ migrationBuilder.AlterColumn(
+ name: "Description",
+ table: "Tasks",
+ type: "text",
+ nullable: true,
+ oldClrType: typeof(string),
+ oldType: "text");
+
+ migrationBuilder.AddColumn(
+ name: "IsDone",
+ table: "Tasks",
+ type: "boolean",
+ nullable: true);
+
+ migrationBuilder.AlterColumn(
+ name: "Title",
+ table: "Shifts",
+ type: "text",
+ nullable: true,
+ oldClrType: typeof(string),
+ oldType: "text");
+
+ migrationBuilder.AlterColumn(
+ name: "Description",
+ table: "Shifts",
+ type: "text",
+ nullable: true,
+ oldClrType: typeof(string),
+ oldType: "text");
+
+ migrationBuilder.AlterColumn(
+ name: "SupportPhone",
+ table: "Complexes",
+ type: "text",
+ nullable: true,
+ oldClrType: typeof(string),
+ oldType: "text");
+
+ migrationBuilder.AlterColumn(
+ name: "Name",
+ table: "Complexes",
+ type: "text",
+ nullable: true,
+ oldClrType: typeof(string),
+ oldType: "text");
+
+ migrationBuilder.AlterColumn(
+ name: "Address",
+ table: "Complexes",
+ type: "text",
+ nullable: true,
+ oldClrType: typeof(string),
+ oldType: "text");
+
+ migrationBuilder.AlterColumn(
+ name: "LastName",
+ table: "AspNetUsers",
+ type: "text",
+ nullable: true,
+ oldClrType: typeof(string),
+ oldType: "text");
+
+ migrationBuilder.AlterColumn(
+ name: "FirstName",
+ table: "AspNetUsers",
+ type: "text",
+ nullable: true,
+ oldClrType: typeof(string),
+ oldType: "text");
+
+ migrationBuilder.AlterColumn(
+ name: "Description",
+ table: "AspNetRoles",
+ type: "text",
+ nullable: true,
+ oldClrType: typeof(string),
+ oldType: "text");
+ }
+
+ ///
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.DropColumn(
+ name: "IsDone",
+ table: "Tasks");
+
+ migrationBuilder.AlterColumn(
+ name: "Title",
+ table: "Tasks",
+ type: "text",
+ nullable: false,
+ defaultValue: "",
+ oldClrType: typeof(string),
+ oldType: "text",
+ oldNullable: true);
+
+ migrationBuilder.AlterColumn(
+ name: "Description",
+ table: "Tasks",
+ type: "text",
+ nullable: false,
+ defaultValue: "",
+ oldClrType: typeof(string),
+ oldType: "text",
+ oldNullable: true);
+
+ migrationBuilder.AlterColumn(
+ name: "Title",
+ table: "Shifts",
+ type: "text",
+ nullable: false,
+ defaultValue: "",
+ oldClrType: typeof(string),
+ oldType: "text",
+ oldNullable: true);
+
+ migrationBuilder.AlterColumn(
+ name: "Description",
+ table: "Shifts",
+ type: "text",
+ nullable: false,
+ defaultValue: "",
+ oldClrType: typeof(string),
+ oldType: "text",
+ oldNullable: true);
+
+ migrationBuilder.AlterColumn(
+ name: "SupportPhone",
+ table: "Complexes",
+ type: "text",
+ nullable: false,
+ defaultValue: "",
+ oldClrType: typeof(string),
+ oldType: "text",
+ oldNullable: true);
+
+ migrationBuilder.AlterColumn