add Accept time request command
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
using GozareshgirProgramManager.Application._Common.Interfaces;
|
||||
using GozareshgirProgramManager.Application.Modules.Projects.DTOs;
|
||||
using GozareshgirProgramManager.Domain.ProjectAgg.Entities;
|
||||
using GozareshgirProgramManager.Domain.ProjectAgg.Enums;
|
||||
|
||||
namespace GozareshgirProgramManager.Application.Modules.Projects.Commands.SetTimeProject;
|
||||
@@ -15,4 +16,5 @@ public class SetTimeSectionTime
|
||||
public string Description { get; set; }
|
||||
public int Hours { get; set; }
|
||||
public int Minutes { get; set; }
|
||||
public TaskSectionAdditionalTimeType Type { get; set; }
|
||||
}
|
||||
@@ -369,7 +369,7 @@ public class SetTimeProjectCommandHandler : IBaseCommandHandler<SetTimeProjectCo
|
||||
foreach (var additionalTime in sectionItem.AdditionalTime)
|
||||
{
|
||||
var additionalTimeSpan = TimeSpan.FromHours(additionalTime.Hours).Add(TimeSpan.FromMinutes(additionalTime.Minutes));
|
||||
section.AddAdditionalTime(additionalTimeSpan, additionalTime.Description, addedByUserId);
|
||||
section.AddAdditionalTime(additionalTimeSpan, additionalTime.Type, additionalTime.Description, addedByUserId);
|
||||
hasAdditionalTime = true;
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
using FluentValidation;
|
||||
using GozareshgirProgramManager.Application._Common.Interfaces;
|
||||
using GozareshgirProgramManager.Domain.ProjectAgg.Entities;
|
||||
|
||||
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<AcceptTimeRequestCommand>
|
||||
{
|
||||
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 باشد");
|
||||
}
|
||||
}
|
||||
@@ -10,7 +10,7 @@ public class CreateTimeRequestValidator : AbstractValidator<CreateTimeRequestCom
|
||||
.InclusiveBetween(0, 100).WithMessage("ساعت درخواست شده باید کمتر از 100 ساعت باشد");
|
||||
|
||||
RuleFor(c => c.Minutes)
|
||||
.InclusiveBetween(0, 60)
|
||||
.InclusiveBetween(0, 59)
|
||||
.WithMessage("دقیقه وارد شده باید بین 0 تا 60 باشد");
|
||||
|
||||
RuleFor(x => x.RequestType)
|
||||
|
||||
@@ -61,12 +61,13 @@ public class TaskSection : EntityBase<Guid>
|
||||
// برای backward compatibility
|
||||
public TimeSpan EstimatedHours => FinalEstimatedHours;
|
||||
|
||||
public void AddAdditionalTime(TimeSpan additionalHours, string? reason = null, long? addedByUserId = null)
|
||||
public void AddAdditionalTime(TimeSpan additionalHours, TaskSectionAdditionalTimeType type, string? reason = null,
|
||||
long? addedByUserId = null)
|
||||
{
|
||||
if (additionalHours <= TimeSpan.Zero)
|
||||
throw new BadRequestException("تایم اضافی باید بزرگتر از صفر باشد", nameof(additionalHours));
|
||||
|
||||
var additionalTime = new TaskSectionAdditionalTime(additionalHours, reason, addedByUserId);
|
||||
var additionalTime = new TaskSectionAdditionalTime(additionalHours,type, reason, addedByUserId);
|
||||
_additionalTimes.Add(additionalTime);
|
||||
}
|
||||
|
||||
|
||||
@@ -9,12 +9,13 @@ public class TaskSectionAdditionalTime : EntityBase<Guid>
|
||||
{
|
||||
private TaskSectionAdditionalTime() { }
|
||||
|
||||
public TaskSectionAdditionalTime(TimeSpan hours, string? reason = null, long? addedByUserId = null)
|
||||
public TaskSectionAdditionalTime(TimeSpan hours, TaskSectionAdditionalTimeType type, string? reason = null,long? addedByUserId = null)
|
||||
{
|
||||
Hours = hours;
|
||||
Reason = reason;
|
||||
AddedByUserId = addedByUserId;
|
||||
AddedAt = DateTime.UtcNow;
|
||||
AddedAt = DateTime.Now;
|
||||
Type = type;
|
||||
}
|
||||
|
||||
public TimeSpan Hours { get; private set; }
|
||||
@@ -22,8 +23,15 @@ public class TaskSectionAdditionalTime : EntityBase<Guid>
|
||||
public long? AddedByUserId { get; private set; }
|
||||
public DateTime AddedAt { get; private set; }
|
||||
|
||||
public TaskSectionAdditionalTimeType Type { get; set; }
|
||||
public void UpdateReason(string? reason)
|
||||
{
|
||||
Reason = reason;
|
||||
}
|
||||
}
|
||||
|
||||
public enum TaskSectionAdditionalTimeType
|
||||
{
|
||||
Effective,
|
||||
Ineffective,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user