using MTWorkHR.Application.Models; using MTWorkHR.Core.UnitOfWork; using MTWorkHR.Application.Services.Interfaces; using MTWorkHR.Core.Entities; using Microsoft.AspNetCore.Identity; using MTWorkHR.Application.Mapper; using MTWorkHR.Core.Global; using MTWorkHR.Identity.Entities; using MTWorkHR.Infrastructure.Repositories; using MTWorkHR.Infrastructure.UnitOfWorks; using MTWorkHR.Core.IRepositories.Base; namespace MTWorkHR.Application.Services { public class UserTaskService : BaseService, IUserTaskService { private readonly IUnitOfWork _unitOfWork; //private readonly AppSettingsConfiguration _configuration; //private readonly GlobalInfo _globalInfo; private readonly IFileService _fileService; public UserTaskService(IUnitOfWork unitOfWork, IFileService fileService) : base(unitOfWork) { _unitOfWork = unitOfWork; _fileService = fileService; } public override async Task GetById(long id) { var entity = await _unitOfWork.UserTask.GetByIdWithAllChildren(id); var response = MapperObject.Mapper.Map(entity); return response; } //public override async Task> GetAll() //{ // var projects = await _unitOfWork.Project.GetAllAsync(); // var response = MapperObject.Mapper.Map>(projects); // return response; //} public override async Task Create(UserTaskDto input) { if(input.TaskAttachments?.Count > 0) if ( !await _fileService.CopyFileToActualFolder(input.TaskAttachments.ToList())) throw new AppException(ExceptionEnum.CouldNotMoveFiles); var entity = MapperObject.Mapper.Map(input); if (entity is null) { throw new AppException(ExceptionEnum.MapperIssue); } var task = await _unitOfWork.UserTask.AddAsync(entity); await _unitOfWork.CompleteAsync(); var response = MapperObject.Mapper.Map(task); return response; } public override async Task Update(UserTaskDto input) { var entitiy = await _unitOfWork.UserTask.GetByIdAsync(input.Id); if (entitiy == null) throw new AppException(ExceptionEnum.RecordNotExist); MapperObject.Mapper.Map(input, entitiy, typeof(UserTaskDto), typeof(UserTask)); await _unitOfWork.CompleteAsync(); return input; } } }