44 lines
2.0 KiB
C#
44 lines
2.0 KiB
C#
using GozareshgirProgramManager.Application._Common.Interfaces;
|
|
using GozareshgirProgramManager.Application._Common.Models;
|
|
using GozareshgirProgramManager.Domain._Common;
|
|
using GozareshgirProgramManager.Domain.ProjectAgg.Entities;
|
|
using GozareshgirProgramManager.Domain.ProjectAgg.Repositories;
|
|
|
|
namespace GozareshgirProgramManager.Application.Modules.Projects.Commands.ChangeDeployStatusProject;
|
|
|
|
public record ChangeDeployStatusProjectCommand(Guid PhaseId, ProjectDeployStatus Status):IBaseCommand;
|
|
|
|
public class ChangeDeployStatusProjectCommandHandler : IBaseCommandHandler<ChangeDeployStatusProjectCommand>
|
|
{
|
|
private readonly IProjectRepository _projectRepository;
|
|
private readonly IProjectPhaseRepository _projectPhaseRepository;
|
|
private readonly IUnitOfWork _unitOfWork;
|
|
|
|
public ChangeDeployStatusProjectCommandHandler(IProjectRepository projectRepository, IUnitOfWork unitOfWork, IProjectPhaseRepository projectPhaseRepository)
|
|
{
|
|
_projectRepository = projectRepository;
|
|
_unitOfWork = unitOfWork;
|
|
_projectPhaseRepository = projectPhaseRepository;
|
|
}
|
|
|
|
public async Task<OperationResult> Handle(ChangeDeployStatusProjectCommand request, CancellationToken cancellationToken)
|
|
{
|
|
var project = await _projectPhaseRepository.GetByIdAsync(request.PhaseId, cancellationToken);
|
|
if (project == null)
|
|
return OperationResult.NotFound("بخش مورد نظر یافت نشد");
|
|
|
|
if (project.DeployStatus == ProjectDeployStatus.NotCompleted)
|
|
{
|
|
return OperationResult.Failure("وضعیت استقرار نمیتواند از حالت 'تایید نشده' تغییر کند.");
|
|
}
|
|
|
|
if (request.Status == ProjectDeployStatus.NotCompleted)
|
|
{
|
|
return OperationResult.Failure("وضعیت استقرار نمیتواند به حالت 'تایید نشده' تغییر کند.");
|
|
}
|
|
project.UpdateDeployStatus(request.Status);
|
|
|
|
await _unitOfWork.SaveChangesAsync(cancellationToken);
|
|
return OperationResult.Success();
|
|
}
|
|
} |