diff --git a/.version b/.version
index 963409b..6085ef1 100644
--- a/.version
+++ b/.version
@@ -1 +1 @@
-0.1.3.1
\ No newline at end of file
+0.1.3.2
\ No newline at end of file
diff --git a/Brizco.Api/Brizco.Api.csproj b/Brizco.Api/Brizco.Api.csproj
index c17515f..b1248b8 100644
--- a/Brizco.Api/Brizco.Api.csproj
+++ b/Brizco.Api/Brizco.Api.csproj
@@ -6,8 +6,8 @@
enable
Linux
..\docker-compose.dcproj
- 0.1.3.1
- 0.1.3.1
+ 0.1.3.2
+ 0.1.3.2
diff --git a/Brizco.Core/EntityServices/Abstracts/IActivityService.cs b/Brizco.Core/EntityServices/Abstracts/IActivityService.cs
new file mode 100644
index 0000000..00ebaa3
--- /dev/null
+++ b/Brizco.Core/EntityServices/Abstracts/IActivityService.cs
@@ -0,0 +1,6 @@
+namespace Brizco.Core.EntityServices.Abstracts;
+
+public interface IActivityService : IScopedDependency
+{
+ Task CreateActivitiesByShiftPlan(Guid shiftPlanId, CancellationToken cancellationToken);
+}
\ No newline at end of file
diff --git a/Brizco.Core/EntityServices/ActivityService.cs b/Brizco.Core/EntityServices/ActivityService.cs
new file mode 100644
index 0000000..138c27b
--- /dev/null
+++ b/Brizco.Core/EntityServices/ActivityService.cs
@@ -0,0 +1,31 @@
+using Brizco.Domain.CommandQueries.Queries;
+using Brizco.Domain.Entities.Task;
+
+namespace Brizco.Core.EntityServices;
+
+public class ActivityService : IActivityService
+{
+ private readonly IMediator _mediator;
+ private readonly IRepositoryWrapper _repositoryWrapper;
+
+ public ActivityService(IMediator mediator,IRepositoryWrapper repositoryWrapper)
+ {
+ _mediator = mediator;
+ _repositoryWrapper = repositoryWrapper;
+ }
+ public async System.Threading.Tasks.Task CreateActivitiesByShiftPlan(Guid shiftPlanId,CancellationToken cancellationToken)
+ {
+ var shiftPlan = await _mediator.Send(new GetShiftPlanQuery(shiftPlanId), cancellationToken);
+ var tasks = _repositoryWrapper.SetRepository()
+ .ExecuteCommand(
+ $@"SELECT t.Id, t.Type, t.Title t.Description t.IsDisposable t.SetFor t.HasDisposed t.ScheduleType t.Amount t.AmountType
+FROM Task t
+INNER JOIN TaskShifts t1 ON t.Id = t1.TaskId
+INNER JOIN TaskDays t2 ON t.Id = t1.TaskId
+INNER JOIN TaskRoutines t3 ON t.Id = t1.TaskId
+WHERE {shiftPlan.ShiftId} = t1.ShiftId
+AND {shiftPlan.PlanFor.DayOfWeek} = t2.DayOfWeek
+AND ON {shiftPlan.RoutineId} = t3.RoutineId ");
+
+ }
+}
\ No newline at end of file
diff --git a/Brizco.Domain/CommandQueries/Commands/ShiftPlanCommands.cs b/Brizco.Domain/CommandQueries/Commands/ShiftPlanCommands.cs
index 2fe64c5..d88a68d 100644
--- a/Brizco.Domain/CommandQueries/Commands/ShiftPlanCommands.cs
+++ b/Brizco.Domain/CommandQueries/Commands/ShiftPlanCommands.cs
@@ -1,9 +1,9 @@
namespace Brizco.Domain.CommandQueries.Commands;
-public record CreateShiftPlanCommand(DateTime PlanDate,Guid ShiftId,Guid RoutineId, List> UserAndPositionIds)
+public record CreateShiftPlanCommand(long PlanDate,Guid ShiftId,Guid RoutineId, List> UserAndPositionIds)
:IRequest;
-public record UpdateShiftPlanCommand(Guid Id,DateTime PlanDate, Guid ShiftId, Guid RoutineId, List> UserAndPositionIds)
+public record UpdateShiftPlanCommand(Guid Id,long PlanDate, Guid ShiftId, Guid RoutineId, List> UserAndPositionIds)
: IRequest;
public record DeleteShiftPlanCommand(Guid Id)
diff --git a/Brizco.Domain/Dtos/LargDtos/ShiftPlanLDto.cs b/Brizco.Domain/Dtos/LargDtos/ShiftPlanLDto.cs
index 8a4288a..b0a39b9 100644
--- a/Brizco.Domain/Dtos/LargDtos/ShiftPlanLDto.cs
+++ b/Brizco.Domain/Dtos/LargDtos/ShiftPlanLDto.cs
@@ -4,8 +4,8 @@ namespace Brizco.Domain.Dtos.LargDtos;
public class ShiftPlanLDto : BaseDto
{
- public DateTime StartAt { get; set; }
- public DateTime EndAt { get; set; }
+ public DateTime PlanFor { get; set; }
+ public Guid RoutineId { get; set; }
public Guid ShiftId { get; set; }
- public List Users { get; internal set; } = new();
+ public List Users { get; set; } = new();
}
\ No newline at end of file
diff --git a/Brizco.Domain/Entities/Task/Activity.cs b/Brizco.Domain/Entities/Task/Activity.cs
index 056d5ba..9756695 100644
--- a/Brizco.Domain/Entities/Task/Activity.cs
+++ b/Brizco.Domain/Entities/Task/Activity.cs
@@ -37,4 +37,7 @@ public partial class Activity : Task
public string PerformanceDescription { get; internal set; } = string.Empty;
public Guid UserId { get; internal set; }
public ApplicationUser? User { get; internal set; }
+
+ public Guid ShiftId { get; internal set; }
+ public Shift.Shift? Shift { get; internal set; }
}
\ No newline at end of file
diff --git a/Brizco.Repository/Handlers/ShiftPlan/CreateShiftPlanCommandHandler.cs b/Brizco.Repository/Handlers/ShiftPlan/CreateShiftPlanCommandHandler.cs
index 38737e2..b848884 100644
--- a/Brizco.Repository/Handlers/ShiftPlan/CreateShiftPlanCommandHandler.cs
+++ b/Brizco.Repository/Handlers/ShiftPlan/CreateShiftPlanCommandHandler.cs
@@ -19,7 +19,7 @@ public class CreateShiftPlanCommandHandler : IRequestHandler
+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("20231120145837_editActivity")]
+ partial class editActivity
+ {
+ ///
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasDefaultSchema("public")
+ .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")
+ .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", "public");
+ });
+
+ 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("UserId")
+ .HasColumnType("uuid");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ComplexId");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("ComplexUsers", "public");
+ });
+
+ modelBuilder.Entity("Brizco.Domain.Entities.Complex.ComplexUserRole", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("ComplexUserId")
+ .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.HasKey("Id");
+
+ b.HasIndex("ComplexUserId");
+
+ b.HasIndex("RoleId");
+
+ b.ToTable("ComplexUserRoles", "public");
+ });
+
+ modelBuilder.Entity("Brizco.Domain.Entities.Complex.Position", 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("Description")
+ .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("SectionId")
+ .HasColumnType("uuid");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ComplexId");
+
+ b.HasIndex("SectionId");
+
+ b.ToTable("Positions", "public");
+ });
+
+ modelBuilder.Entity("Brizco.Domain.Entities.Complex.Section", 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("Description")
+ .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.HasKey("Id");
+
+ b.HasIndex("ComplexId");
+
+ b.ToTable("Sections", "public");
+ });
+
+ modelBuilder.Entity("Brizco.Domain.Entities.Routine.Routine", 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("Description")
+ .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.HasKey("Id");
+
+ b.HasIndex("ComplexId");
+
+ b.ToTable("Routines", "public");
+ });
+
+ modelBuilder.Entity("Brizco.Domain.Entities.Shift.Shift", 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("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.HasIndex("ComplexId");
+
+ b.ToTable("Shifts", "public");
+ });
+
+ 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", "public");
+ });
+
+ 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("IsRemoved")
+ .HasColumnType("boolean");
+
+ b.Property("ModifiedAt")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("ModifiedBy")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("PlanFor")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("RemovedAt")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("RemovedBy")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("RoutineId")
+ .HasColumnType("uuid");
+
+ b.Property("ShiftId")
+ .HasColumnType("uuid");
+
+ b.HasKey("Id");
+
+ b.HasIndex("RoutineId");
+
+ b.HasIndex("ShiftId");
+
+ b.ToTable("ShiftPlans", "public");
+ });
+
+ modelBuilder.Entity("Brizco.Domain.Entities.Shift.ShiftPlanUser", 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("PositionId")
+ .HasColumnType("uuid");
+
+ b.Property("RemovedAt")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("RemovedBy")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("ShiftPlanId")
+ .HasColumnType("uuid");
+
+ b.Property("UserId")
+ .HasColumnType("uuid");
+
+ b.HasKey("Id");
+
+ b.HasIndex("PositionId");
+
+ b.HasIndex("ShiftPlanId");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("ShiftPlanUsers", "public");
+ });
+
+ modelBuilder.Entity("Brizco.Domain.Entities.Shift.ShiftRoutine", 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("RoutineId")
+ .HasColumnType("uuid");
+
+ b.Property("ShiftId")
+ .HasColumnType("uuid");
+
+ b.HasKey("Id");
+
+ b.HasIndex("RoutineId");
+
+ b.HasIndex("ShiftId");
+
+ b.ToTable("ShiftRoutines", "public");
+ });
+
+ 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("ComplexId")
+ .HasColumnType("uuid");
+
+ 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("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("ScheduleType")
+ .HasColumnType("integer");
+
+ b.Property("SetFor")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("Title")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Type")
+ .HasColumnType("integer");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ComplexId");
+
+ b.ToTable("Tasks", "public");
+
+ b.HasDiscriminator("Discriminator").HasValue("Task");
+
+ b.UseTphMappingStrategy();
+ });
+
+ modelBuilder.Entity("Brizco.Domain.Entities.Task.TaskDay", 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("TaskId")
+ .HasColumnType("uuid");
+
+ b.HasKey("Id");
+
+ b.HasIndex("TaskId");
+
+ b.ToTable("TaskDays", "public");
+ });
+
+ modelBuilder.Entity("Brizco.Domain.Entities.Task.TaskPosition", 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("PositionId")
+ .HasColumnType("uuid");
+
+ b.Property("RemovedAt")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("RemovedBy")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("TaskId")
+ .HasColumnType("uuid");
+
+ b.HasKey("Id");
+
+ b.HasIndex("PositionId");
+
+ b.HasIndex("TaskId");
+
+ b.ToTable("TaskPositions", "public");
+ });
+
+ modelBuilder.Entity("Brizco.Domain.Entities.Task.TaskRoutine", 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("RoutineId")
+ .HasColumnType("uuid");
+
+ b.Property("TaskId")
+ .HasColumnType("uuid");
+
+ b.HasKey("Id");
+
+ b.HasIndex("RoutineId");
+
+ b.HasIndex("TaskId");
+
+ b.ToTable("TaskRoutines", "public");
+ });
+
+ 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", "public");
+ });
+
+ modelBuilder.Entity("Brizco.Domain.Entities.User.ApplicationRole", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("ComplexId")
+ .HasColumnType("uuid");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken()
+ .HasColumnType("text");
+
+ b.Property("Description")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("EnglishName")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Name")
+ .HasMaxLength(256)
+ .HasColumnType("character varying(256)");
+
+ b.Property("NormalizedName")
+ .HasMaxLength(256)
+ .HasColumnType("character varying(256)");
+
+ b.Property("PersianName")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ComplexId");
+
+ b.HasIndex("NormalizedName")
+ .IsUnique()
+ .HasDatabaseName("RoleNameIndex");
+
+ b.ToTable("Roles", "public");
+ });
+
+ 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")
+ .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("NationalId")
+ .IsRequired()
+ .HasColumnType("text");
+
+ 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("SelectedComplexUserRoleId")
+ .HasColumnType("uuid");
+
+ b.Property("SignUpStatus")
+ .HasColumnType("integer");
+
+ 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("Users", "public");
+ });
+
+ 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("RoleClaims", "public");
+ });
+
+ 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("Claims", "public");
+ });
+
+ 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("Logins", "public");
+ });
+
+ 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("UserRoles", "public");
+ });
+
+ 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("Tokens", "public");
+ });
+
+ 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")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("ShiftId")
+ .HasColumnType("uuid");
+
+ b.Property("Status")
+ .HasColumnType("integer");
+
+ b.Property("UserId")
+ .HasColumnType("uuid");
+
+ b.HasIndex("ShiftId");
+
+ b.HasIndex("UserId");
+
+ b.HasDiscriminator().HasValue("Activity");
+ });
+
+ modelBuilder.Entity("Brizco.Domain.Entities.Complex.ComplexUser", b =>
+ {
+ b.HasOne("Brizco.Domain.Entities.Complex.Complex", "Complex")
+ .WithMany("Users")
+ .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.Complex.ComplexUserRole", b =>
+ {
+ b.HasOne("Brizco.Domain.Entities.Complex.ComplexUser", "ComplexUser")
+ .WithMany("Roles")
+ .HasForeignKey("ComplexUserId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.HasOne("Brizco.Domain.Entities.User.ApplicationRole", "Role")
+ .WithMany()
+ .HasForeignKey("RoleId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.Navigation("ComplexUser");
+
+ b.Navigation("Role");
+ });
+
+ modelBuilder.Entity("Brizco.Domain.Entities.Complex.Position", b =>
+ {
+ b.HasOne("Brizco.Domain.Entities.Complex.Complex", "Complex")
+ .WithMany()
+ .HasForeignKey("ComplexId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.HasOne("Brizco.Domain.Entities.Complex.Section", "Section")
+ .WithMany("Positions")
+ .HasForeignKey("SectionId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.Navigation("Complex");
+
+ b.Navigation("Section");
+ });
+
+ modelBuilder.Entity("Brizco.Domain.Entities.Complex.Section", b =>
+ {
+ b.HasOne("Brizco.Domain.Entities.Complex.Complex", "Complex")
+ .WithMany()
+ .HasForeignKey("ComplexId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.Navigation("Complex");
+ });
+
+ modelBuilder.Entity("Brizco.Domain.Entities.Routine.Routine", b =>
+ {
+ b.HasOne("Brizco.Domain.Entities.Complex.Complex", "Complex")
+ .WithMany()
+ .HasForeignKey("ComplexId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.Navigation("Complex");
+ });
+
+ modelBuilder.Entity("Brizco.Domain.Entities.Shift.Shift", b =>
+ {
+ b.HasOne("Brizco.Domain.Entities.Complex.Complex", "Complex")
+ .WithMany("Shifts")
+ .HasForeignKey("ComplexId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.Navigation("Complex");
+ });
+
+ 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.Routine.Routine", "Routine")
+ .WithMany()
+ .HasForeignKey("RoutineId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.HasOne("Brizco.Domain.Entities.Shift.Shift", "Shift")
+ .WithMany("Plans")
+ .HasForeignKey("ShiftId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.Navigation("Routine");
+
+ b.Navigation("Shift");
+ });
+
+ modelBuilder.Entity("Brizco.Domain.Entities.Shift.ShiftPlanUser", b =>
+ {
+ b.HasOne("Brizco.Domain.Entities.Complex.Position", "Position")
+ .WithMany()
+ .HasForeignKey("PositionId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.HasOne("Brizco.Domain.Entities.Shift.ShiftPlan", "ShiftPlan")
+ .WithMany("Users")
+ .HasForeignKey("ShiftPlanId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.HasOne("Brizco.Domain.Entities.User.ApplicationUser", "User")
+ .WithMany()
+ .HasForeignKey("UserId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.Navigation("Position");
+
+ b.Navigation("ShiftPlan");
+
+ b.Navigation("User");
+ });
+
+ modelBuilder.Entity("Brizco.Domain.Entities.Shift.ShiftRoutine", b =>
+ {
+ b.HasOne("Brizco.Domain.Entities.Routine.Routine", "Routine")
+ .WithMany("Shifts")
+ .HasForeignKey("RoutineId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.HasOne("Brizco.Domain.Entities.Shift.Shift", "Shift")
+ .WithMany("Routines")
+ .HasForeignKey("ShiftId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.Navigation("Routine");
+
+ b.Navigation("Shift");
+ });
+
+ modelBuilder.Entity("Brizco.Domain.Entities.Task.Task", b =>
+ {
+ b.HasOne("Brizco.Domain.Entities.Complex.Complex", "Complex")
+ .WithMany("Tasks")
+ .HasForeignKey("ComplexId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.Navigation("Complex");
+ });
+
+ modelBuilder.Entity("Brizco.Domain.Entities.Task.TaskDay", b =>
+ {
+ b.HasOne("Brizco.Domain.Entities.Task.Task", "Task")
+ .WithMany("Days")
+ .HasForeignKey("TaskId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.Navigation("Task");
+ });
+
+ modelBuilder.Entity("Brizco.Domain.Entities.Task.TaskPosition", b =>
+ {
+ b.HasOne("Brizco.Domain.Entities.Complex.Position", "Position")
+ .WithMany()
+ .HasForeignKey("PositionId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.HasOne("Brizco.Domain.Entities.Task.Task", "Task")
+ .WithMany("Positions")
+ .HasForeignKey("TaskId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.Navigation("Position");
+
+ b.Navigation("Task");
+ });
+
+ modelBuilder.Entity("Brizco.Domain.Entities.Task.TaskRoutine", b =>
+ {
+ b.HasOne("Brizco.Domain.Entities.Routine.Routine", "Routine")
+ .WithMany("Tasks")
+ .HasForeignKey("RoutineId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.HasOne("Brizco.Domain.Entities.Task.Task", "Task")
+ .WithMany("Routines")
+ .HasForeignKey("TaskId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.Navigation("Routine");
+
+ 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.User.ApplicationRole", b =>
+ {
+ b.HasOne("Brizco.Domain.Entities.Complex.Complex", "Complex")
+ .WithMany("Roles")
+ .HasForeignKey("ComplexId");
+
+ b.Navigation("Complex");
+ });
+
+ 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