Commit 40cb6832 authored by hasan khaddour's avatar hasan khaddour

fix s/.

parent bca956a3
...@@ -17,6 +17,7 @@ using PSManagement.Application.Projects.UseCases.Commands.AddProjectStep; ...@@ -17,6 +17,7 @@ using PSManagement.Application.Projects.UseCases.Commands.AddProjectStep;
using PSManagement.Application.Projects.UseCases.Commands.ChangeProjectTeamLeader; using PSManagement.Application.Projects.UseCases.Commands.ChangeProjectTeamLeader;
using PSManagement.Application.Projects.UseCases.Commands.ApproveProject; using PSManagement.Application.Projects.UseCases.Commands.ApproveProject;
using PSManagement.Application.Projects.UseCases.Queries.GetParticipants; using PSManagement.Application.Projects.UseCases.Queries.GetParticipants;
using PSManagement.Application.Projects.UseCases.Queries.GetProjectAttachments;
namespace PSManagement.Api.Controllers.Projects namespace PSManagement.Api.Controllers.Projects
{ {
...@@ -56,7 +57,7 @@ namespace PSManagement.Api.Controllers.Projects ...@@ -56,7 +57,7 @@ namespace PSManagement.Api.Controllers.Projects
} }
[HttpGet("ByProjectManager")] [HttpGet("ByProjectManager")]
public async Task<IActionResult> GetByBrojectManager(GetProjectsByProjectManagerRequest request ) public async Task<IActionResult> GetByBrojectManager([FromQuery] GetProjectsByProjectManagerRequest request )
{ {
GetProjectsByFilterQuery query = _mapper.Map<GetProjectsByFilterQuery>(request); GetProjectsByFilterQuery query = _mapper.Map<GetProjectsByFilterQuery>(request);
...@@ -173,5 +174,15 @@ namespace PSManagement.Api.Controllers.Projects ...@@ -173,5 +174,15 @@ namespace PSManagement.Api.Controllers.Projects
return Ok(result); return Ok(result);
} }
[HttpGet("Attachments{id}")]
public async Task<IActionResult> GetAttachments([FromQuery]GetProjectAttachmentsRequest request)
{
var query = _mapper.Map<GetProjectAttachmentsQuery>(request);
var result = await _sender.Send(query);
return Ok(_mapper.Map<Result<IEnumerable<AttachmentReponse>>>(result));
}
} }
} }
...@@ -42,7 +42,7 @@ namespace PSManagement.Api.Controllers.Steps ...@@ -42,7 +42,7 @@ namespace PSManagement.Api.Controllers.Steps
} }
[HttpGet("ByProject")] [HttpGet("ByProject")]
public async Task<IActionResult> GetByProject(GetStepsByProjectRequest request) public async Task<IActionResult> GetByProject([FromQuery] GetStepsByProjectRequest request)
{ {
GetStepsByProjectQuery query = _mapper.Map<GetStepsByProjectQuery>(request); GetStepsByProjectQuery query = _mapper.Map<GetStepsByProjectQuery>(request);
...@@ -66,7 +66,7 @@ namespace PSManagement.Api.Controllers.Steps ...@@ -66,7 +66,7 @@ namespace PSManagement.Api.Controllers.Steps
[HttpGet("StepTrackHistory")] [HttpGet("StepTrackHistory")]
public async Task<IActionResult> Get(GetStepTrackHistoryRequest request) public async Task<IActionResult> Get([FromQuery] GetStepTrackHistoryRequest request)
{ {
var query =_mapper.Map<GetStepTrackHistoryQuery>(request); var query =_mapper.Map<GetStepTrackHistoryQuery>(request);
......
...@@ -66,7 +66,7 @@ namespace PSManagement.Api.Controllers.Tracks ...@@ -66,7 +66,7 @@ namespace PSManagement.Api.Controllers.Tracks
} }
[HttpGet("GetTracksByProject")] [HttpGet("GetTracksByProject")]
public async Task<IActionResult> GetTracksByProject(GetTracksByProjectRequest request) public async Task<IActionResult> GetTracksByProject([FromQuery] GetTracksByProjectRequest request)
{ {
var query = _mapper.Map<GetTracksByProjectQuery>(request); var query = _mapper.Map<GetTracksByProjectQuery>(request);
...@@ -100,7 +100,7 @@ namespace PSManagement.Api.Controllers.Tracks ...@@ -100,7 +100,7 @@ namespace PSManagement.Api.Controllers.Tracks
{ {
var command = _mapper.Map<CompleteTrackCommand>(request); var command = _mapper.Map<CompleteTrackCommand>(request);
var result = _mapper.Map<Result>(await _sender.Send(command)); var result =await _sender.Send(command);
return Ok(result); return Ok(result);
} }
...@@ -110,7 +110,7 @@ namespace PSManagement.Api.Controllers.Tracks ...@@ -110,7 +110,7 @@ namespace PSManagement.Api.Controllers.Tracks
{ {
var command = _mapper.Map<RemoveTrackCommand>(request); var command = _mapper.Map<RemoveTrackCommand>(request);
var result = _mapper.Map<Result>(await _sender.Send(command)); var result =await _sender.Send(command);
return Ok(result); return Ok(result);
} }
...@@ -144,7 +144,7 @@ namespace PSManagement.Api.Controllers.Tracks ...@@ -144,7 +144,7 @@ namespace PSManagement.Api.Controllers.Tracks
{ {
var command = _mapper.Map<UpdateEmployeeWorkTrackCommand>(request); var command = _mapper.Map<UpdateEmployeeWorkTrackCommand>(request);
var result = _mapper.Map<Result>(await _sender.Send(command)); var result =await _sender.Send(command);
return Ok(result); return Ok(result);
} }
...@@ -153,7 +153,7 @@ namespace PSManagement.Api.Controllers.Tracks ...@@ -153,7 +153,7 @@ namespace PSManagement.Api.Controllers.Tracks
{ {
var command = _mapper.Map<UpdateStepTrackCommand>(request); var command = _mapper.Map<UpdateStepTrackCommand>(request);
var result = _mapper.Map<Result>(await _sender.Send(command)); var result = await _sender.Send(command);
return Ok(result); return Ok(result);
} }
......
...@@ -12,10 +12,12 @@ using PSManagement.Application.Projects.UseCases.Commands.ChangeProjectTeamLeade ...@@ -12,10 +12,12 @@ using PSManagement.Application.Projects.UseCases.Commands.ChangeProjectTeamLeade
using PSManagement.Application.Projects.UseCases.Commands.CreateProject; using PSManagement.Application.Projects.UseCases.Commands.CreateProject;
using PSManagement.Application.Projects.UseCases.Commands.RemoveParticipant; using PSManagement.Application.Projects.UseCases.Commands.RemoveParticipant;
using PSManagement.Application.Projects.UseCases.Queries.ListAllProject; using PSManagement.Application.Projects.UseCases.Queries.ListAllProject;
using PSManagement.Application.Tracks.Common;
using PSManagement.Contracts.Customers.Requests; using PSManagement.Contracts.Customers.Requests;
using PSManagement.Contracts.Customers.Responses; using PSManagement.Contracts.Customers.Responses;
using PSManagement.Contracts.Projects.Requests; using PSManagement.Contracts.Projects.Requests;
using PSManagement.Contracts.Projects.Response; using PSManagement.Contracts.Projects.Response;
using PSManagement.Contracts.Tracks.Response;
using PSManagement.SharedKernel.Utilities; using PSManagement.SharedKernel.Utilities;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
...@@ -53,10 +55,13 @@ namespace PSManagement.Api.Mappers ...@@ -53,10 +55,13 @@ namespace PSManagement.Api.Mappers
CreateMap<AddProjectStepRequest, AddProjectStepCommand>().ReverseMap(); CreateMap<AddProjectStepRequest, AddProjectStepCommand>().ReverseMap();
CreateMap<ChangeProjectTeamLeaderRequest, ChangeProjectTeamLeaderCommand>().ReverseMap(); CreateMap<ChangeProjectTeamLeaderRequest, ChangeProjectTeamLeaderCommand>().ReverseMap();
CreateMap<RemoveParticipantRequest, RemoveParticipantCommand>().ReverseMap(); CreateMap<RemoveParticipantRequest, RemoveParticipantCommand>().ReverseMap();
CreateMap<ProjectDTO,ProjectResponse>().ReverseMap();
CreateMap<EmployeeResponse, EmployeeDTO>().ReverseMap(); CreateMap<EmployeeResponse, EmployeeDTO>().ReverseMap();
CreateMap<EmployeeParticipateResponse, EmployeeParticipateDTO>().ReverseMap(); CreateMap<EmployeeParticipateResponse, EmployeeParticipateDTO>().ReverseMap();
CreateMap<TrackDTO, TrackResponse>().ReverseMap();
} }
} }
} }
...@@ -5,6 +5,9 @@ using PSManagement.Application.FinancialSpends.Common; ...@@ -5,6 +5,9 @@ using PSManagement.Application.FinancialSpends.Common;
using PSManagement.Application.FinancialSpends.UseCases.Commands.CreateFinancialSpendItem; using PSManagement.Application.FinancialSpends.UseCases.Commands.CreateFinancialSpendItem;
using PSManagement.Application.Projects.Common; using PSManagement.Application.Projects.Common;
using PSManagement.Application.Tracks.Common; using PSManagement.Application.Tracks.Common;
using PSManagement.Application.Tracks.UseCaes.Commands.AddEmployeeTrack;
using PSManagement.Application.Tracks.UseCaes.Commands.AddStepTrack;
using PSManagement.Application.Tracks.UseCaes.Commands.CreateTrack;
using PSManagement.Domain.Customers.Entities; using PSManagement.Domain.Customers.Entities;
using PSManagement.Domain.Customers.ValueObjects; using PSManagement.Domain.Customers.ValueObjects;
using PSManagement.Domain.Employees.Entities; using PSManagement.Domain.Employees.Entities;
...@@ -53,6 +56,12 @@ namespace PSManagement.Application.Mappers ...@@ -53,6 +56,12 @@ namespace PSManagement.Application.Mappers
CreateMap<Track, TrackDTO>(); CreateMap<Track, TrackDTO>();
CreateMap<CreateTrackCommand, Track>().ReverseMap();
CreateMap<AddEmployeeTrackCommand, EmployeeTrack>().ReverseMap();
CreateMap<AddStepTrackCommand, StepTrack>()
.ForMember(e => e.OldExecutionRatio, op => op.Ignore());
CreateMap<FinancialSpendingDTO, FinancialSpending>().ReverseMap(); CreateMap<FinancialSpendingDTO, FinancialSpending>().ReverseMap();
......
using Ardalis.Result; using Ardalis.Result;
using PSManagement.Application.Contracts.Storage; using PSManagement.Application.Contracts.Storage;
using PSManagement.Domain.Projects.Builders; using PSManagement.Domain.Projects.Builders;
using PSManagement.Domain.Projects.DomainErrors;
using PSManagement.Domain.Projects.Entities; using PSManagement.Domain.Projects.Entities;
using PSManagement.Domain.Projects.Repositories; using PSManagement.Domain.Projects.Repositories;
using PSManagement.SharedKernel.CQRS.Command; using PSManagement.SharedKernel.CQRS.Command;
...@@ -16,20 +17,28 @@ namespace PSManagement.Application.Projects.UseCases.Commands.AddAttachment ...@@ -16,20 +17,28 @@ namespace PSManagement.Application.Projects.UseCases.Commands.AddAttachment
private readonly IFileService _fileService; private readonly IFileService _fileService;
private readonly IRepository<Attachment> _attachmentRepository; private readonly IRepository<Attachment> _attachmentRepository;
private readonly IUnitOfWork _unitOfWork; private readonly IUnitOfWork _unitOfWork;
private readonly IProjectsRepository _projectsRepository;
public AddAttachmentCommandHandler( public AddAttachmentCommandHandler(
IFileService fileService, IFileService fileService,
IRepository<Attachment> repository, IRepository<Attachment> repository,
IUnitOfWork unitOfWork) IUnitOfWork unitOfWork,
IProjectsRepository projectsRepository)
{ {
_fileService = fileService; _fileService = fileService;
_attachmentRepository = repository; _attachmentRepository = repository;
_unitOfWork = unitOfWork; _unitOfWork = unitOfWork;
_projectsRepository = projectsRepository;
} }
public async Task<Result<int>> Handle(AddAttachmentCommand request, CancellationToken cancellationToken) public async Task<Result<int>> Handle(AddAttachmentCommand request, CancellationToken cancellationToken)
{ {
Result<string> pathResult = await _fileService.StoreFile(request.AttachmentName+Guid.NewGuid(),request.File); Result<string> pathResult = await _fileService.StoreFile(request.AttachmentName+Guid.NewGuid(),request.File);
Project project = await _projectsRepository.GetByIdAsync(request.ProjectId);
if (project is null) {
return Result.Invalid(ProjectsErrors.InvalidEntryError);
}
if (pathResult.IsSuccess) if (pathResult.IsSuccess)
{ {
Attachment attachment = new(pathResult.Value, request.AttachmentName, request.AttachmentDescription, request.ProjectId); Attachment attachment = new(pathResult.Value, request.AttachmentName, request.AttachmentDescription, request.ProjectId);
......
...@@ -48,7 +48,7 @@ namespace PSManagement.Application.Projects.UseCases.Commands.RemoveParticipant ...@@ -48,7 +48,7 @@ namespace PSManagement.Application.Projects.UseCases.Commands.RemoveParticipant
return Result.Invalid(ProjectsErrors.ParticipantUnExistError); return Result.Invalid(ProjectsErrors.ParticipantUnExistError);
} }
var employeeParticipate =project.EmployeeParticipates.Where(e => e.ProjectId == request.ParticipantId).FirstOrDefault(); var employeeParticipate =project.EmployeeParticipates.Where(e => e.EmployeeId == request.ParticipantId).FirstOrDefault();
if (employeeParticipate is null) { if (employeeParticipate is null) {
return Result.Invalid(ProjectsErrors.ParticipantUnExistError); return Result.Invalid(ProjectsErrors.ParticipantUnExistError);
......
...@@ -15,7 +15,8 @@ namespace PSManagement.Application.Tracks.Common ...@@ -15,7 +15,8 @@ namespace PSManagement.Application.Tracks.Common
public TrackInfo TrackInfo { get; set; } public TrackInfo TrackInfo { get; set; }
public String ExecutionState { get; set; } public String ExecutionState { get; set; }
public int ExecutionRatio { get; set; } public int TrackExecutionRatio { get; set; }
public int OldExecutionRatio { get; set; }
} }
} }
\ No newline at end of file
...@@ -9,6 +9,6 @@ namespace PSManagement.Application.Tracks.UseCaes.Commands.AddStepTrack ...@@ -9,6 +9,6 @@ namespace PSManagement.Application.Tracks.UseCaes.Commands.AddStepTrack
int TrackId, int TrackId,
string ExecutionState, string ExecutionState,
DateTime TrackDate, DateTime TrackDate,
int ExecutionRatio int TrackExecutionRatio
) : ICommand<Result<int>>; ) : ICommand<Result<int>>;
} }
\ No newline at end of file
using Ardalis.Result; using Ardalis.Result;
using AutoMapper; using AutoMapper;
using PSManagement.Domain.Projects.DomainErrors;
using PSManagement.Domain.Projects.Entities;
using PSManagement.Domain.Projects.Repositories;
using PSManagement.Domain.Steps.Repositories; using PSManagement.Domain.Steps.Repositories;
using PSManagement.Domain.Tracking; using PSManagement.Domain.Tracking;
using PSManagement.Domain.Tracking.DomainErrors; using PSManagement.Domain.Tracking.DomainErrors;
...@@ -22,18 +25,21 @@ namespace PSManagement.Application.Tracks.UseCaes.Commands.AddStepTrack ...@@ -22,18 +25,21 @@ namespace PSManagement.Application.Tracks.UseCaes.Commands.AddStepTrack
private readonly IUnitOfWork _unitOfWork; private readonly IUnitOfWork _unitOfWork;
private readonly IMapper _mapper; private readonly IMapper _mapper;
private readonly BaseSpecification<Track> _specification; private readonly BaseSpecification<Track> _specification;
private readonly IStepsRepository _stepsRepository;
public AddStepTrackCommandHandler( public AddStepTrackCommandHandler(
IUnitOfWork unitOfWork, IUnitOfWork unitOfWork,
ITracksRepository tracksRepository, ITracksRepository tracksRepository,
IRepository<StepTrack> stepTracksRepository, IRepository<StepTrack> stepTracksRepository,
IMapper mapper) IMapper mapper,
IStepsRepository stepsRepository)
{ {
_unitOfWork = unitOfWork; _unitOfWork = unitOfWork;
_tracksRepository = tracksRepository; _tracksRepository = tracksRepository;
_stepTracksRepository = stepTracksRepository; _stepTracksRepository = stepTracksRepository;
_mapper = mapper; _mapper = mapper;
_specification = new TrackSpecification(); _specification = new TrackSpecification();
_stepsRepository = stepsRepository;
} }
public async Task<Result<int>> Handle(AddStepTrackCommand request, CancellationToken cancellationToken) public async Task<Result<int>> Handle(AddStepTrackCommand request, CancellationToken cancellationToken)
...@@ -59,8 +65,17 @@ namespace PSManagement.Application.Tracks.UseCaes.Commands.AddStepTrack ...@@ -59,8 +65,17 @@ namespace PSManagement.Application.Tracks.UseCaes.Commands.AddStepTrack
return Result.Invalid(TracksErrors.StepTrackExistError); return Result.Invalid(TracksErrors.StepTrackExistError);
} }
Step step = await _stepsRepository.GetByIdAsync(request.StepId);
if (step is null) {
StepTrack stepTrack = await _stepTracksRepository.AddAsync(_mapper.Map<StepTrack>(request)); return Result.Invalid(StepsErrors.InvalidEntryError);
}
StepTrack stepTrack = _mapper.Map<StepTrack>(request);
stepTrack.OldExecutionRatio = step.CurrentCompletionRatio;
stepTrack = await _stepTracksRepository.AddAsync(stepTrack);
await _unitOfWork.SaveChangesAsync(); await _unitOfWork.SaveChangesAsync();
......
using Ardalis.Result; using Ardalis.Result;
using AutoMapper; using AutoMapper;
using PSManagement.Domain.Employees.Repositories;
using PSManagement.Domain.Projects.Entities;
using PSManagement.Domain.Projects.Repositories;
using PSManagement.Domain.Steps.Repositories; using PSManagement.Domain.Steps.Repositories;
using PSManagement.Domain.Tracking; using PSManagement.Domain.Tracking;
using PSManagement.Domain.Tracking.DomainErrors; using PSManagement.Domain.Tracking.DomainErrors;
using PSManagement.Domain.Tracking.DomainEvents; using PSManagement.Domain.Tracking.DomainEvents;
using PSManagement.Domain.Tracking.Entities;
using PSManagement.Domain.Tracking.Specification;
using PSManagement.SharedKernel.CQRS.Command; using PSManagement.SharedKernel.CQRS.Command;
using PSManagement.SharedKernel.Interfaces; using PSManagement.SharedKernel.Interfaces;
using PSManagement.SharedKernel.Specification;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
...@@ -14,22 +20,34 @@ namespace PSManagement.Application.Tracks.UseCaes.Commands.CompleteTrack ...@@ -14,22 +20,34 @@ namespace PSManagement.Application.Tracks.UseCaes.Commands.CompleteTrack
public class CompleteTrackCommandHandler : ICommandHandler<CompleteTrackCommand, Result> public class CompleteTrackCommandHandler : ICommandHandler<CompleteTrackCommand, Result>
{ {
private readonly ITracksRepository _tracksRepository; private readonly ITracksRepository _tracksRepository;
private readonly IStepsRepository _stepsRepository;
private readonly IEmployeesRepository _employeesRepository;
private readonly IUnitOfWork _unitOfWork; private readonly IUnitOfWork _unitOfWork;
private readonly BaseSpecification<Track> _specification;
public CompleteTrackCommandHandler( public CompleteTrackCommandHandler(
IUnitOfWork unitOfWork, IUnitOfWork unitOfWork,
ITracksRepository tracksRepository ITracksRepository tracksRepository,
) IStepsRepository stepsRepository,
IEmployeesRepository employeesRepository)
{ {
_unitOfWork = unitOfWork; _unitOfWork = unitOfWork;
_specification = new TrackSpecification();
_tracksRepository = tracksRepository; _tracksRepository = tracksRepository;
_stepsRepository = stepsRepository;
_employeesRepository = employeesRepository;
} }
public async Task<Result> Handle(CompleteTrackCommand request, CancellationToken cancellationToken) public async Task<Result> Handle(CompleteTrackCommand request, CancellationToken cancellationToken)
{ {
Track track = await _tracksRepository.GetByIdAsync(request.TrackId); _specification.AddInclude(e => e.StepTracks);
_specification.AddInclude(e => e.EmployeeTracks);
_specification.AddInclude("EmployeeTracks.Employee");
Track track = await _tracksRepository.GetByIdAsync(request.TrackId,_specification);
if (track is null) if (track is null)
{ {
...@@ -38,6 +56,14 @@ namespace PSManagement.Application.Tracks.UseCaes.Commands.CompleteTrack ...@@ -38,6 +56,14 @@ namespace PSManagement.Application.Tracks.UseCaes.Commands.CompleteTrack
} }
foreach (StepTrack stepTrack in track?.StepTracks) {
Step step =await _stepsRepository.GetByIdAsync(stepTrack.StepId);
step.CurrentCompletionRatio += stepTrack.TrackExecutionRatio;
}
track.Complete(request.CompletionDate); track.Complete(request.CompletionDate);
await _unitOfWork.SaveChangesAsync(); await _unitOfWork.SaveChangesAsync();
......
...@@ -10,7 +10,7 @@ namespace PSManagement.Application.Tracks.UseCaes.Commands.UpdateStepTrack ...@@ -10,7 +10,7 @@ namespace PSManagement.Application.Tracks.UseCaes.Commands.UpdateStepTrack
int StepId, int StepId,
string ExecutionState, string ExecutionState,
DateTime TrackDate, DateTime TrackDate,
int ExecutionRatio int TrackExecutionRatio
) : ILoggableCommand<Result>; ) : ILoggableCommand<Result>;
} }
...@@ -60,7 +60,7 @@ namespace PSManagement.Application.Tracks.UseCaes.Commands.UpdateStepTrack ...@@ -60,7 +60,7 @@ namespace PSManagement.Application.Tracks.UseCaes.Commands.UpdateStepTrack
return Result.Invalid(TracksErrors.InvalidEntryError); return Result.Invalid(TracksErrors.InvalidEntryError);
} }
stepTrack.ExecutionRatio = request.ExecutionRatio; stepTrack.TrackExecutionRatio = request.TrackExecutionRatio;
stepTrack.ExecutionState = request.ExecutionState; stepTrack.ExecutionState = request.ExecutionState;
await _stepTracksRepository.UpdateAsync(stepTrack); await _stepTracksRepository.UpdateAsync(stepTrack);
......
...@@ -8,5 +8,4 @@ namespace PSManagement.Contracts.Projects.Requests ...@@ -8,5 +8,4 @@ namespace PSManagement.Contracts.Projects.Requests
String AttachmentDescription, String AttachmentDescription,
String AttachmentName, String AttachmentName,
IFormFile File); IFormFile File);
} }
namespace PSManagement.Contracts.Projects.Requests
{
public record GetProjectAttachmentsRequest(
int ProjectId,
int? PageNumber,
int? PageSize
);
}
using System; using PSManagement.Domain.Tracking.ValueObjects;
using System;
namespace PSManagement.Contracts.Projects.Response namespace PSManagement.Contracts.Projects.Response
{ {
...@@ -7,7 +8,7 @@ namespace PSManagement.Contracts.Projects.Response ...@@ -7,7 +8,7 @@ namespace PSManagement.Contracts.Projects.Response
public int StepId { get; set; } public int StepId { get; set; }
public int TrackId { get; set; } public int TrackId { get; set; }
public String ExecutionState { get; set; } public String ExecutionState { get; set; }
public DateTime TrackDate { get; set; } public TrackInfo TrackInfo { get; set; }
public int ExecutionRatio { get; set; } public int ExecutionRatio { get; set; }
......
...@@ -11,6 +11,6 @@ namespace PSManagement.Contracts.Tracks.Requests ...@@ -11,6 +11,6 @@ namespace PSManagement.Contracts.Tracks.Requests
int TrackId, int TrackId,
string ExecutionState, string ExecutionState,
DateTime TrackDate, DateTime TrackDate,
int ExecutionRatio int TrackExecutionRatio
); );
} }
...@@ -8,6 +8,6 @@ namespace PSManagement.Contracts.Tracks.Requests ...@@ -8,6 +8,6 @@ namespace PSManagement.Contracts.Tracks.Requests
int StepId, int StepId,
string ExecutionState, string ExecutionState,
DateTime TrackDate, DateTime TrackDate,
int ExecutionRatio int TrackExecutionRatio
); );
} }
...@@ -11,7 +11,8 @@ namespace PSManagement.Contracts.Tracks.Response ...@@ -11,7 +11,8 @@ namespace PSManagement.Contracts.Tracks.Response
StepInfo StepInfo , StepInfo StepInfo ,
TrackInfo TrackInfo, TrackInfo TrackInfo,
String ExecutionState, String ExecutionState,
DateTime TrackDate , int TrackExecutionRatio,
int ExecutionRatio int OldExecutionRatio
); );
} }
...@@ -5,7 +5,6 @@ namespace PSManagement.Contracts.Tracks.Response ...@@ -5,7 +5,6 @@ namespace PSManagement.Contracts.Tracks.Response
{ {
public record TrackResponse ( public record TrackResponse (
int Id , int Id ,
bool IsCompleted ,
TrackInfo TrackInfo , TrackInfo TrackInfo ,
String Notes , String Notes ,
int ProjectId int ProjectId
......
...@@ -25,7 +25,20 @@ namespace PSManagement.Domain.Projects.Entities ...@@ -25,7 +25,20 @@ namespace PSManagement.Domain.Projects.Entities
public string CurrentState { get; private set; } // Persisted in the database public string CurrentState { get; private set; } // Persisted in the database
[NotMapped] [NotMapped]
private IProjectState _state; private IProjectState _state ;
[NotMapped]
public IProjectState State {
get {
if (_state is null) {
SetStateFromString(CurrentState);
}
return _state;
}
set => _state = value;
}
// information about who lead and execute the project // information about who lead and execute the project
public int TeamLeaderId { get; set; } public int TeamLeaderId { get; set; }
...@@ -100,7 +113,6 @@ namespace PSManagement.Domain.Projects.Entities ...@@ -100,7 +113,6 @@ namespace PSManagement.Domain.Projects.Entities
} }
public Project() public Project()
{ {
SetStateFromString(CurrentState);
} }
public void SetState(IProjectState newState) public void SetState(IProjectState newState)
{ {
...@@ -109,27 +121,27 @@ namespace PSManagement.Domain.Projects.Entities ...@@ -109,27 +121,27 @@ namespace PSManagement.Domain.Projects.Entities
} }
public void Complete() public void Complete()
{ {
_state.Complete(this); State.Complete(this);
} }
public void Plan() public void Plan()
{ {
_state.Plan(this); State.Plan(this);
} }
public void Approve(Aggreement projectAggreement) public void Approve(Aggreement projectAggreement)
{ {
_state.Approve(this,projectAggreement); State.Approve(this,projectAggreement);
} }
public void Cancel(DateTime canellationTime) public void Cancel(DateTime canellationTime)
{ {
_state.Cancel(this,canellationTime); State.Cancel(this,canellationTime);
} }
public void Propose() public void Propose()
{ {
_state.Propose(this); State.Propose(this);
} }
......
...@@ -12,8 +12,8 @@ namespace PSManagement.Domain.Tracking.Entities ...@@ -12,8 +12,8 @@ namespace PSManagement.Domain.Tracking.Entities
public int TrackId { get; set; } public int TrackId { get; set; }
public Track Track { get; set; } public Track Track { get; set; }
public String ExecutionState { get; set; } public String ExecutionState { get; set; }
public int ExecutionRatio { get; set; } public int TrackExecutionRatio { get; set; }
public int OldExecutionRatio { get; set; }
public StepTrack() public StepTrack()
{ {
......
...@@ -38,6 +38,7 @@ namespace PSManagement.Infrastructure.Persistence.EntitiesConfiguration ...@@ -38,6 +38,7 @@ namespace PSManagement.Infrastructure.Persistence.EntitiesConfiguration
} }
); );
builder.HasOne(e => e.TeamLeader) builder.HasOne(e => e.TeamLeader)
.WithMany() .WithMany()
.HasForeignKey(e => e.TeamLeaderId) .HasForeignKey(e => e.TeamLeaderId)
......
...@@ -11,7 +11,7 @@ namespace PSManagement.Infrastructure.Persistence.Migrations ...@@ -11,7 +11,7 @@ namespace PSManagement.Infrastructure.Persistence.Migrations
table: "Projects", table: "Projects",
type: "nvarchar(max)", type: "nvarchar(max)",
nullable: true, nullable: true,
defaultValueSql: "Proposed", defaultValue: "Proposed",
oldClrType: typeof(string), oldClrType: typeof(string),
oldType: "nvarchar(max)", oldType: "nvarchar(max)",
oldNullable: true, oldNullable: true,
......
using Microsoft.EntityFrameworkCore.Migrations;
namespace PSManagement.Infrastructure.Persistence.Migrations
{
public partial class FixProjectEntity1 : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.RenameColumn(
name: "ExecutionRatio",
table: "StepTracks",
newName: "TrackExecutionRatio");
migrationBuilder.AddColumn<int>(
name: "OldExecutionRatio",
table: "StepTracks",
type: "int",
nullable: false,
defaultValue: 0);
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "OldExecutionRatio",
table: "StepTracks");
migrationBuilder.RenameColumn(
name: "TrackExecutionRatio",
table: "StepTracks",
newName: "ExecutionRatio");
}
}
}
...@@ -483,15 +483,18 @@ namespace PSManagement.Infrastructure.Persistence.Migrations ...@@ -483,15 +483,18 @@ namespace PSManagement.Infrastructure.Persistence.Migrations
.HasColumnType("int") .HasColumnType("int")
.HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
b.Property<int>("ExecutionRatio")
.HasColumnType("int");
b.Property<string>("ExecutionState") b.Property<string>("ExecutionState")
.HasColumnType("nvarchar(max)"); .HasColumnType("nvarchar(max)");
b.Property<int>("OldExecutionRatio")
.HasColumnType("int");
b.Property<int>("StepId") b.Property<int>("StepId")
.HasColumnType("int"); .HasColumnType("int");
b.Property<int>("TrackExecutionRatio")
.HasColumnType("int");
b.Property<int>("TrackId") b.Property<int>("TrackId")
.HasColumnType("int"); .HasColumnType("int");
......
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