Api/Brizco.Repository/Handlers/Tasks/CreateTaskCommandHandler.cs

45 lines
2.3 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

namespace Brizco.Repository.Handlers.Tasks;
public class CreateActivityCommandHandler(IRepositoryWrapper repositoryWrapper, ICurrentUserService currentUserService)
: IRequestHandler<CreateTaskCommand, TaskLDto>
{
public async Task<TaskLDto> Handle(CreateTaskCommand request, CancellationToken cancellationToken)
{
if (currentUserService.ComplexId == null)
throw new AppException("ComplexId is null", ApiResultStatusCode.NotFound);
if (!Guid.TryParse(currentUserService.ComplexId, out Guid complexId))
throw new AppException("ComplexId is wrong", ApiResultStatusCode.NotFound);
var task = Domain.Entities.Tasks.Task
.Create(request.Title,
request.Description,
request.Type,
request.IsDisposable,
DateTimeExtensions.UnixTimeStampToDateTime(request.SetFor),
request.HasDisposed,
request.Amount,
request.AmountType,
complexId,
request.ScheduleType);
if (request.Routines.Count == 0)
throw new AppException("لطفا روتین های وظیفه را انتخاب نمایید");
task.AddRoutine(request.Routines.ToArray());
if (request.Shifts.Count == 0)
throw new AppException("اگر فعالیت برای یک گروه نقش انتخاب شده باشد باید لیست نقش ها را ارسال نمایید");
task.AddShift(request.Shifts.ToArray());
if (request.Positions.Count == 0)
throw new AppException("اگر فعالیت برای یک گروه نقش انتخاب شده باشد باید لیست نقش ها را ارسال نمایید");
task.AddPosition(request.Positions.ToArray());
if (task.ScheduleType == TaskScheduleType.Weekly && request.Days.Count == 0)
throw new AppException("اگر تکرار فعالیت به صورت هفتگی باشد باید روزهای ان هفته را انتخاب کنید");
request.Days.ForEach(d=>task.SetDay(d));
repositoryWrapper.SetRepository<Domain.Entities.Tasks.Task>().Add(task);
await repositoryWrapper.SaveChangesAsync(cancellationToken);
return task.AdaptToLDto();
}
}