diff --git a/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/TaskSectionTimeRequests/Commands/AcceptTimeRequest/AcceptTimeRequestCommand.cs b/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/TaskSectionTimeRequests/Commands/AcceptTimeRequest/AcceptTimeRequestCommand.cs index 6ab14477..c9b7d130 100644 --- a/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/TaskSectionTimeRequests/Commands/AcceptTimeRequest/AcceptTimeRequestCommand.cs +++ b/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/TaskSectionTimeRequests/Commands/AcceptTimeRequest/AcceptTimeRequestCommand.cs @@ -1,29 +1,41 @@ -using FluentValidation; using GozareshgirProgramManager.Application._Common.Interfaces; +using GozareshgirProgramManager.Application._Common.Models; using GozareshgirProgramManager.Domain.ProjectAgg.Entities; +using GozareshgirProgramManager.Domain.ProjectAgg.Repositories; namespace GozareshgirProgramManager.Application.Modules.TaskSectionTimeRequests.Commands.AcceptTimeRequest; public record AcceptTimeRequestCommand(Guid TimeRequestId, Guid SectionId,TaskSectionAdditionalTimeType TimeType,int Hour,int Minute):IBaseCommand; -public class AcceptTimeRequestCommandValidator : AbstractValidator +public class AcceptTimeRequestCommandHandler:IBaseCommandHandler { - public AcceptTimeRequestCommandValidator() + private readonly ITaskSectionTimeRequestRepository _timeRequestRepository; + private readonly ITaskSectionRepository _taskSectionRepository; + public AcceptTimeRequestCommandHandler(ITaskSectionTimeRequestRepository timeRequestRepository, ITaskSectionRepository taskSectionRepository) { - RuleFor(c => c.TimeRequestId) - .NotEmpty().WithMessage("شناسه درخواست نمیتواند خالی باشد"); + _timeRequestRepository = timeRequestRepository; + _taskSectionRepository = taskSectionRepository; + } - RuleFor(c => c.SectionId) - .NotEmpty().WithMessage("شناسه بخش فرعی نمیتواند خالی باشد"); + public async Task Handle(AcceptTimeRequestCommand request, CancellationToken cancellationToken) + { + var timeRequest = await _timeRequestRepository.GetByIdAsync(request.TimeRequestId, cancellationToken); + if (timeRequest == null) + { + return OperationResult.NotFound("درخواست زمان شما یافت نشد"); + } - RuleFor(c => c.TimeType) - .NotNull().WithMessage("نوع زمان درخواست شده نامعتبر است") - .IsInEnum(); + var taskSection = await _taskSectionRepository.GetByIdAsync(request.SectionId, cancellationToken); - RuleFor(c => c.Hour) - .InclusiveBetween(0, 100).WithMessage("ساعت وارد شده میتواند بین 0 تا 100 باشد"); - RuleFor(c => c.Minute) - .InclusiveBetween(0, 60).WithMessage("دقیقه وارد شده میتواند بین 0 تا 60 باشد"); + if (taskSection == null) + { + return OperationResult.NotFound("بخش فرعی وارد شده نامعتبر است"); + } + + if (timeRequest.RequestType.) + { + + } } } \ No newline at end of file diff --git a/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/TaskSectionTimeRequests/Commands/AcceptTimeRequest/AcceptTimeRequestCommandValidator.cs b/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/TaskSectionTimeRequests/Commands/AcceptTimeRequest/AcceptTimeRequestCommandValidator.cs new file mode 100644 index 00000000..7d199891 --- /dev/null +++ b/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/TaskSectionTimeRequests/Commands/AcceptTimeRequest/AcceptTimeRequestCommandValidator.cs @@ -0,0 +1,24 @@ +using FluentValidation; + +namespace GozareshgirProgramManager.Application.Modules.TaskSectionTimeRequests.Commands.AcceptTimeRequest; + +public class AcceptTimeRequestCommandValidator : AbstractValidator +{ + public AcceptTimeRequestCommandValidator() + { + RuleFor(c => c.TimeRequestId) + .NotEmpty().WithMessage("شناسه درخواست نمیتواند خالی باشد"); + + RuleFor(c => c.SectionId) + .NotEmpty().WithMessage("شناسه بخش فرعی نمیتواند خالی باشد"); + + RuleFor(c => c.TimeType) + .NotNull().WithMessage("نوع زمان درخواست شده نامعتبر است") + .IsInEnum(); + + RuleFor(c => c.Hour) + .InclusiveBetween(0, 100).WithMessage("ساعت وارد شده میتواند بین 0 تا 100 باشد"); + RuleFor(c => c.Minute) + .InclusiveBetween(0, 60).WithMessage("دقیقه وارد شده میتواند بین 0 تا 60 باشد"); + } +} \ No newline at end of file