Commit b4370697 authored by hasan khaddour's avatar hasan khaddour

fix s.

parent ebb68b8b
......@@ -45,7 +45,7 @@ namespace PSManagement.Application.Mappers
CreateMap<TrackDTO, Track>().ReverseMap();
CreateMap<StepTrack, StepTrackDTO>()
.ForMember(d => d.TrackDate, op=> op.MapFrom( src => src.Track.TrackDate));
.ForMember(d => d.TrackDate, op=> op.MapFrom( src => src.Track.TrackInfo.TrackDate));
CreateMap<FinancialSpendingDTO, FinancialSpending>().ReverseMap();
......
......@@ -9,16 +9,10 @@
<Folder Include="Behaviors\AuthorizationBehavior\" />
<Folder Include="Employees\UseCases\Commands\InreesEmployeeWorkHours\" />
<Folder Include="Projects\UseCases\Queries\GetProjectAttachments\" />
<Folder Include="XReports\UseCases\" />
<Folder Include="XReports\UseCases\Queries\" />
<Folder Include="Tracks\UseCaes\Commands\CreateTrack\" />
<Folder Include="Tracks\UseCaes\Commands\AddStepsTrack\" />
<Folder Include="Tracks\UseCaes\Commands\AddEmployeesTrack\" />
<Folder Include="Tracks\UseCaes\Commands\RemoveTrack\" />
<Folder Include="Tracks\UseCaes\Commands\CompleteTrack\" />
<Folder Include="Tracks\UseCaes\Commands\UpdateEmployeeTrack\" />
<Folder Include="Tracks\UseCaes\Commands\UpdateStepTrack\" />
<Folder Include="Tracks\UseCaes\Commands\UpdateTrack\" />
<Folder Include="Tracks\UseCaes\Commands\RemoveTrack\" />
<Folder Include="Tracks\UseCaes\Queries\GetTrackById\" />
<Folder Include="Tracks\UseCaes\Queries\GetTracksByProject\" />
<Folder Include="Tracks\UseCaes\Queries\GetPlanTrack\" />
......
......@@ -10,6 +10,7 @@ namespace PSManagement.Application.Tracks.Common
public class TrackDTO
{
public int Id { get; set; }
public bool IsCompleted { get; set; }
public DateTime TrackDate { get; set; }
public String TrackNote { get; set; }
public int ProjectId { get; set; }
......
using Ardalis.Result;
using PSManagement.Domain.Tracking.ValueObjects;
using PSManagement.SharedKernel.CQRS.Command;
using System;
namespace PSManagement.Application.Tracks.UseCaes.Commands.AddEmployeesTrack
{
public record AddEmployeeTrackCommand(
int TrackId,
int EmployeeId,
EmployeeWorkInfo EmployeeWorkInfo ,
EmployeeWork EmployeeWork,
String Notes,
int ProjectId
) : ILoggableCommand<Result>;
}
using Ardalis.Result;
using PSManagement.SharedKernel.CQRS.Command;
using System;
namespace PSManagement.Application.Tracks.UseCaes.Commands.CompleteTrack
{
public record CompleteTrackCommand(
int TrackId,
DateTime TrackDate,
int ProjectId
) : ILoggableCommand<Result>;
}
using Ardalis.Result;
using AutoMapper;
using PSManagement.Domain.Steps.Repositories;
using PSManagement.Domain.Tracking;
using PSManagement.Domain.Tracking.DomainErrors;
using PSManagement.Domain.Tracking.DomainEvents;
using PSManagement.SharedKernel.CQRS.Command;
using PSManagement.SharedKernel.Interfaces;
using System.Threading;
using System.Threading.Tasks;
namespace PSManagement.Application.Tracks.UseCaes.Commands.CompleteTrack
{
public class CompleteTrackCommandHandler : ICommandHandler<CompleteTrackCommand, Result>
{
private readonly ITracksRepository _tracksRepository;
private readonly IUnitOfWork _unitOfWork;
public CompleteTrackCommandHandler(
IUnitOfWork unitOfWork,
ITracksRepository tracksRepository
)
{
_unitOfWork = unitOfWork;
_tracksRepository = tracksRepository;
}
public async Task<Result> Handle(CompleteTrackCommand request, CancellationToken cancellationToken)
{
Track track = await _tracksRepository.GetByIdAsync(request.TrackId);
if (track is null)
{
return Result.Invalid(TracksErrror.InvalidEntryError);
}
track.AddDomainEvent(new TrackCompleteddEvent(request.ProjectId, request.TrackId, request.TrackDate));
await _unitOfWork.SaveChangesAsync();
return Result.Success();
}
}
}
using Ardalis.Result;
using PSManagement.Domain.Projects.ValueObjects;
using PSManagement.Domain.Tracking.ValueObjects;
using PSManagement.SharedKernel.CQRS.Command;
using System;
namespace PSManagement.Application.Tracks.UseCaes.Commands.CreateTrack
{
public record CreateTrackCommand(
TrackInfo TrackInfo,
String TrackNote ,
int ProjectId
) : ILoggableCommand<Result<int>>;
}
using Ardalis.Result;
using AutoMapper;
using PSManagement.Domain.Steps.Repositories;
using PSManagement.Domain.Tracking;
using PSManagement.Domain.Tracking.DomainEvents;
using PSManagement.SharedKernel.CQRS.Command;
using PSManagement.SharedKernel.Interfaces;
using System.Threading;
using System.Threading.Tasks;
namespace PSManagement.Application.Tracks.UseCaes.Commands.CreateTrack
{
public class CreateTrackCommandHandler : ICommandHandler<CreateTrackCommand, Result<int>>
{
private readonly ITracksRepository _tracksRepository;
private readonly IUnitOfWork _unitOfWork;
private readonly IMapper _mapper;
public CreateTrackCommandHandler(
IMapper mapper,
IUnitOfWork unitOfWork,
ITracksRepository tracksRepository
)
{
_mapper = mapper;
_unitOfWork = unitOfWork;
_tracksRepository = tracksRepository;
}
public async Task<Result<int>> Handle(CreateTrackCommand request, CancellationToken cancellationToken)
{
Track track = _mapper.Map<Track>(request);
track = await _tracksRepository.AddAsync(track);
track.AddDomainEvent(new TrackCreatedEvent(request.ProjectId,request.TrackInfo.TrackDate));
await _unitOfWork.SaveChangesAsync();
return Result.Success(track.Id);
}
}
}
......@@ -4,7 +4,6 @@ using PSManagement.Domain.Tracking;
using PSManagement.Domain.Tracking.Entities;
using PSManagement.SharedKernel.Aggregate;
using PSManagement.SharedKernel.Entities;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
......@@ -39,8 +38,4 @@ namespace PSManagement.Domain.Employees.Entities
HIASTId = hiastId;
}
}
public record WorkInfo (
String WorkType ,
String WorkJob
);
}
using System;
namespace PSManagement.Domain.Employees.Entities
{
public record WorkInfo (
String WorkType ,
String WorkJob
);
}
......@@ -6,7 +6,7 @@
<ItemGroup>
<Folder Include="Identity\ValueObjects\" />
<Folder Include="Reports\Repositories\" />
<Folder Include="XReports\Repositories\" />
</ItemGroup>
<ItemGroup>
......
......@@ -2,7 +2,6 @@
using PSManagement.Domain.Employees.Entities;
using PSManagement.Domain.FinancialSpends.Entities;
using PSManagement.Domain.Projects.ValueObjects;
using PSManagement.Domain.ProjectTypes.Entities;
using PSManagement.Domain.Tracking;
using PSManagement.SharedKernel.Aggregate;
using System;
......
using PSManagement.Domain.ProjectTypes.Entities;
using PSManagement.SharedKernel.Repositories;
using PSManagement.SharedKernel.DomainErrors;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PSManagement.Domain.ProjectTypes.Repositories
namespace PSManagement.Domain.Tracking.DomainErrors
{
public interface IProjectTypesRepository : IRepository<ProjectType>
public class TracksErrror
{
public static DomainError InvalidEntryError { get; } = new("TrackError.InvalidEntry.", "Invalid Project Data");
}
}
using PSManagement.SharedKernel.Events;
using System;
namespace PSManagement.Domain.Tracking.DomainEvents
{
public record TrackCompleteddEvent(
int ProjectId,
int TrackId,
DateTime Date) : IDomainEvent;
}
using PSManagement.SharedKernel.Events;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PSManagement.Domain.Tracking.DomainEvents
{
public record TrackCreatedEvent(
int ProjectId,
DateTime Date) : IDomainEvent;
}
using PSManagement.Domain.Employees.Entities;
using PSManagement.Domain.Tracking.ValueObjects;
using PSManagement.SharedKernel.Entities;
using System;
namespace PSManagement.Domain.Tracking
{
......@@ -10,11 +10,8 @@ namespace PSManagement.Domain.Tracking
public int TrackId { get; set; }
public Employee Employee { get; set; }
public Track Track { get; set; }
public int WorkingHours { get; set; }
public String PerformedWork { get; set; }
public String AssignedWork { get; set; }
//public ICollection<EmployeeWork> EmployeeWorks { get; set; }
public EmployeeWorkInfo EmployeeWorkInfo { get; set; }
public EmployeeWork EmployeeWork { get; set; }
public string Notes { get; set; }
}
}
using PSManagement.Domain.Employees.Entities;
using PSManagement.SharedKernel.Entities;
namespace PSManagement.Domain.Tracking.Entities
{
public class EmployeeWork : BaseEntity
{
public int EmployeeWorkId { get; set; }
public int StepTrackId { get; set; }
public StepTrack StepTrack { get; set; }
public int EmployeeId { get; set; }
public Employee Employee { get; set; }
public int HoursWorked { get; set; }
public string Notes { get; set; }
public int ContributingRatio { get; set; }
}
}
......@@ -12,9 +12,8 @@ namespace PSManagement.Domain.Tracking.Entities
public int TrackId { get; set; }
public Track Track { get; set; }
public String ExecutionState { get; set; }
public int ExecutionRatio { get; set; }
//public ICollection<EmployeeWork> EmployeeWorks { get; set; }
public StepTrack()
{
......
using PSManagement.Domain.Employees.Entities;
using PSManagement.Domain.Projects.Entities;
using PSManagement.Domain.Tracking.Entities;
using PSManagement.Domain.Tracking.ValueObjects;
using PSManagement.SharedKernel.Aggregate;
using PSManagement.SharedKernel.Entities;
using System;
......@@ -13,9 +14,8 @@ namespace PSManagement.Domain.Tracking
{
public class Track : BaseEntity
{
public DateTime TrackDate { get; set; }
public bool IsCompleted { get; set; }
public String TrackNote { get; set; }
public TrackInfo TrackInfo { get; set; }
public String Notes { get; set; }
public int ProjectId { get; set; }
public Project Project { get; set; }
public ICollection<StepTrack> StepTracks { get; set; }
......
namespace PSManagement.Domain.Tracking.ValueObjects
{
public record EmployeeWork(
int AssignedWorkingHours,
int WorkedHours,
int ContributingRatio
);
}
using System;
namespace PSManagement.Domain.Tracking.ValueObjects
{
public record EmployeeWorkInfo(
string AssignedWork,
string PerformedWork,
DateTime AssignedWorkEnd
);
}
using System;
namespace PSManagement.Domain.Tracking.ValueObjects
{
public record TrackInfo(
DateTime TrackDate,
bool IsCompleted,
string StatusDescription
);
}
using PSManagement.Domain.Projects.Entities;
using PSManagement.SharedKernel.Aggregate;
using PSManagement.SharedKernel.Entities;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PSManagement.Domain.ProjectTypes.Entities
{
public class ProjectType : BaseEntity
{
public string TypeName { get; set; }
public string Description { get; set; }
public int WorkerCount { get; set; }
public ICollection<Project> Projects { get; set; }
}
}
......@@ -8,11 +8,13 @@ using PSManagement.Domain.FinincialSpending.Repositories;
using PSManagement.Domain.Identity.Repositories;
using PSManagement.Domain.Projects.Builders;
using PSManagement.Domain.Projects.Repositories;
using PSManagement.Domain.Steps.Repositories;
using PSManagement.Infrastructure.Persistence.Repositories.Base;
using PSManagement.Infrastructure.Persistence.Repositories.CustomerRepository;
using PSManagement.Infrastructure.Persistence.Repositories.EmployeeRepository;
using PSManagement.Infrastructure.Persistence.Repositories.ProjectRepository;
using PSManagement.Infrastructure.Persistence.Repositories.StepRepository;
using PSManagement.Infrastructure.Persistence.Repositories.TrackRepository;
using PSManagement.Infrastructure.Persistence.Repositories.UserRepository;
using PSManagement.Infrastructure.Persistence.UoW;
using PSManagement.SharedKernel.Interfaces;
......@@ -36,7 +38,7 @@ namespace PSManagement.Infrastructure.Persistence.DI
services.AddScoped<IEmployeesRepository, EmployeesRespository>();
services.AddScoped<IStepsRepository, StepsRepository>();
services.AddScoped<IFinancialSpendingRepository, FinancialSpendingRepository>();
services.AddScoped<ITracksRepository, TracksRepository>();
services.AddScoped<ProjectBuilder>();
services.AddScoped(typeof(IRepository<>), typeof(BaseRepository<>));
......
......@@ -9,10 +9,7 @@ namespace PSManagement.Infrastructure.Persistence.EntitiesConfiguration
IEntityTypeConfiguration<Track> ,
IEntityTypeConfiguration<StepTrack>,
IEntityTypeConfiguration<EmployeeTrack>
//,
//IEntityTypeConfiguration<EmployeeWork>
{
public void Configure(EntityTypeBuilder<Track> builder)
{
......@@ -23,16 +20,15 @@ namespace PSManagement.Infrastructure.Persistence.EntitiesConfiguration
.OnDelete(DeleteBehavior.Restrict);
builder.Ignore(e => e.TrackedEmployees);
//builder.HasMany(e => e.TrackedEmployees)
// .WithMany(e => e.trac)
// .UsingEntity<EmployeeParticipate>(
// l => l.HasOne<Employee>(e => e.Employee)
// .WithMany(e => e.EmployeeParticipates)
// .HasForeignKey(e => e.EmployeeId),
// r => r.HasOne<Project>(e => e.Project)
// .WithMany(e => e.EmployeeParticipates)
// .HasForeignKey(e => e.ProjectId)
// );
builder.OwnsOne(e => e.TrackInfo, p =>
{
p.Property(e => e.IsCompleted).HasColumnName("IsCompleted").HasDefaultValue(false);
p.Property(e => e.StatusDescription).HasColumnName("StatusDescription");
p.Property(e => e.TrackDate).HasColumnName("TrackDate");
});
}
public void Configure(EntityTypeBuilder<StepTrack> builder)
{
......@@ -56,23 +52,24 @@ namespace PSManagement.Infrastructure.Persistence.EntitiesConfiguration
.WithMany(s => s.EmployeeTracks)
.HasForeignKey(st => st.EmloyeeId)
;
}
//public void Configure(EntityTypeBuilder<EmployeeWork> builder)
//{
// //builder.HasOne(ew => ew.StepTrack)
// //.WithMany(st => st.EmployeeWorks)
// //.HasForeignKey(ew => ew.StepTrackId)
// // .OnDelete(DeleteBehavior.Restrict); ;
builder.OwnsOne(e => e.EmployeeWorkInfo, p =>
{
p.Property(e => e.AssignedWork).HasColumnName("AssignedWork");
p.Property(e => e.AssignedWorkEnd).HasColumnName("AssignedWorkEnd");
p.Property(e => e.PerformedWork).HasColumnName("PerformedWork");
});
builder.OwnsOne(e => e.EmployeeWork, p =>
{
p.Property(e => e.ContributingRatio).HasColumnName("ContributingRatio");
p.Property(e => e.WorkedHours).HasColumnName("WorkedHours");
p.Property(e => e.AssignedWorkingHours).HasColumnName("AssignedWorkingHours");
// builder.HasOne(ew => ew.Employee)
// .WithMany(e => e.EmployeeWorks)
// .HasForeignKey(ew => ew.EmployeeId)
// .OnDelete(DeleteBehavior.Restrict); ;
});
}
//}
}
}
using System;
using Microsoft.EntityFrameworkCore.Migrations;
namespace PSManagement.Infrastructure.Persistence.Migrations
{
public partial class UpdateTrackDomain : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "WorkingHours",
table: "EmployeeTrack");
migrationBuilder.RenameColumn(
name: "TrackNote",
table: "Tracks",
newName: "StatusDescription");
migrationBuilder.AlterColumn<DateTime>(
name: "TrackDate",
table: "Tracks",
type: "datetime2",
nullable: true,
oldClrType: typeof(DateTime),
oldType: "datetime2");
migrationBuilder.AlterColumn<bool>(
name: "IsCompleted",
table: "Tracks",
type: "bit",
nullable: true,
defaultValue: false,
oldClrType: typeof(bool),
oldType: "bit");
migrationBuilder.AddColumn<string>(
name: "Notes",
table: "Tracks",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "ExecutionState",
table: "StepTracks",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<DateTime>(
name: "AssignedWorkEnd",
table: "EmployeeTrack",
type: "datetime2",
nullable: true);
migrationBuilder.AddColumn<int>(
name: "AssignedWorkingHours",
table: "EmployeeTrack",
type: "int",
nullable: true);
migrationBuilder.AddColumn<int>(
name: "ContributingRatio",
table: "EmployeeTrack",
type: "int",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "Notes",
table: "EmployeeTrack",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<int>(
name: "WorkedHours",
table: "EmployeeTrack",
type: "int",
nullable: true);
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "Notes",
table: "Tracks");
migrationBuilder.DropColumn(
name: "ExecutionState",
table: "StepTracks");
migrationBuilder.DropColumn(
name: "AssignedWorkEnd",
table: "EmployeeTrack");
migrationBuilder.DropColumn(
name: "AssignedWorkingHours",
table: "EmployeeTrack");
migrationBuilder.DropColumn(
name: "ContributingRatio",
table: "EmployeeTrack");
migrationBuilder.DropColumn(
name: "Notes",
table: "EmployeeTrack");
migrationBuilder.DropColumn(
name: "WorkedHours",
table: "EmployeeTrack");
migrationBuilder.RenameColumn(
name: "StatusDescription",
table: "Tracks",
newName: "TrackNote");
migrationBuilder.AlterColumn<DateTime>(
name: "TrackDate",
table: "Tracks",
type: "datetime2",
nullable: false,
defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified),
oldClrType: typeof(DateTime),
oldType: "datetime2",
oldNullable: true);
migrationBuilder.AlterColumn<bool>(
name: "IsCompleted",
table: "Tracks",
type: "bit",
nullable: false,
defaultValue: false,
oldClrType: typeof(bool),
oldType: "bit",
oldNullable: true,
oldDefaultValue: false);
migrationBuilder.AddColumn<int>(
name: "WorkingHours",
table: "EmployeeTrack",
type: "int",
nullable: false,
defaultValue: 0);
}
}
}
......@@ -435,21 +435,15 @@ namespace PSManagement.Infrastructure.Persistence.Migrations
.HasColumnType("int")
.HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
b.Property<string>("AssignedWork")
.HasColumnType("nvarchar(max)");
b.Property<int>("EmloyeeId")
.HasColumnType("int");
b.Property<string>("PerformedWork")
b.Property<string>("Notes")
.HasColumnType("nvarchar(max)");
b.Property<int>("TrackId")
.HasColumnType("int");
b.Property<int>("WorkingHours")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("EmloyeeId");
......@@ -469,6 +463,9 @@ namespace PSManagement.Infrastructure.Persistence.Migrations
b.Property<int>("ExecutionRatio")
.HasColumnType("int");
b.Property<string>("ExecutionState")
.HasColumnType("nvarchar(max)");
b.Property<int>("StepId")
.HasColumnType("int");
......@@ -491,18 +488,12 @@ namespace PSManagement.Infrastructure.Persistence.Migrations
.HasColumnType("int")
.HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
b.Property<bool>("IsCompleted")
.HasColumnType("bit");
b.Property<string>("Notes")
.HasColumnType("nvarchar(max)");
b.Property<int>("ProjectId")
.HasColumnType("int");
b.Property<DateTime>("TrackDate")
.HasColumnType("datetime2");
b.Property<string>("TrackNote")
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.HasIndex("ProjectId");
......@@ -1019,8 +1010,66 @@ namespace PSManagement.Infrastructure.Persistence.Migrations
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.OwnsOne("PSManagement.Domain.Tracking.ValueObjects.EmployeeWork", "EmployeeWork", b1 =>
{
b1.Property<int>("EmployeeTrackId")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
b1.Property<int>("AssignedWorkingHours")
.HasColumnType("int")
.HasColumnName("AssignedWorkingHours");
b1.Property<int>("ContributingRatio")
.HasColumnType("int")
.HasColumnName("ContributingRatio");
b1.Property<int>("WorkedHours")
.HasColumnType("int")
.HasColumnName("WorkedHours");
b1.HasKey("EmployeeTrackId");
b1.ToTable("EmployeeTrack");
b1.WithOwner()
.HasForeignKey("EmployeeTrackId");
});
b.OwnsOne("PSManagement.Domain.Tracking.ValueObjects.EmployeeWorkInfo", "EmployeeWorkInfo", b1 =>
{
b1.Property<int>("EmployeeTrackId")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
b1.Property<string>("AssignedWork")
.HasColumnType("nvarchar(max)")
.HasColumnName("AssignedWork");
b1.Property<DateTime>("AssignedWorkEnd")
.HasColumnType("datetime2")
.HasColumnName("AssignedWorkEnd");
b1.Property<string>("PerformedWork")
.HasColumnType("nvarchar(max)")
.HasColumnName("PerformedWork");
b1.HasKey("EmployeeTrackId");
b1.ToTable("EmployeeTrack");
b1.WithOwner()
.HasForeignKey("EmployeeTrackId");
});
b.Navigation("Employee");
b.Navigation("EmployeeWork");
b.Navigation("EmployeeWorkInfo");
b.Navigation("Track");
});
......@@ -1051,7 +1100,38 @@ namespace PSManagement.Infrastructure.Persistence.Migrations
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.OwnsOne("PSManagement.Domain.Tracking.ValueObjects.TrackInfo", "TrackInfo", b1 =>
{
b1.Property<int>("TrackId")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
b1.Property<bool>("IsCompleted")
.ValueGeneratedOnAdd()
.HasColumnType("bit")
.HasDefaultValue(false)
.HasColumnName("IsCompleted");
b1.Property<string>("StatusDescription")
.HasColumnType("nvarchar(max)")
.HasColumnName("StatusDescription");
b1.Property<DateTime>("TrackDate")
.HasColumnType("datetime2")
.HasColumnName("TrackDate");
b1.HasKey("TrackId");
b1.ToTable("Tracks");
b1.WithOwner()
.HasForeignKey("TrackId");
});
b.Navigation("Project");
b.Navigation("TrackInfo");
});
modelBuilder.Entity("PermissionRole", b =>
......
using PSManagement.Domain.Employees.Entities;
using PSManagement.Domain.Employees.Repositories;
using PSManagement.Domain.FinincialSpending.Repositories;
using PSManagement.Infrastructure.Persistence.Repositories.Base;
namespace PSManagement.Infrastructure.Persistence.Repositories.EmployeeRepository
......@@ -10,4 +11,5 @@ namespace PSManagement.Infrastructure.Persistence.Repositories.EmployeeRepositor
{
}
}
}
using PSManagement.Domain.Steps.Repositories;
using PSManagement.Domain.Tracking;
using PSManagement.Infrastructure.Persistence.Repositories.Base;
namespace PSManagement.Infrastructure.Persistence.Repositories.TrackRepository
{
public class TracksRepository : BaseRepository<Track>, ITracksRepository
{
public TracksRepository(AppDbContext context) : base(context)
{
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment