public async Task Execute(TaskModel.Task task, IFormFile[] Evidences, List <string> filesToDelete)
        {
            filesToDelete.RemoveAll(string.IsNullOrWhiteSpace);
            try
            {
                if (filesToDelete != null)
                {
                    await DeleteFiles(filesToDelete, task);
                }

                if (Evidences != null)
                {
                    await InsertFiles(Evidences, task);
                }

                _tasksEvidenceRepository.Update(task.TaskID, task.NewEvidencesUrls, task.DeleteEvidencesUrls);
                updateTaskProperties(task.Observation, task.TaskID, task.TaskStateID);
                if (task.EntityType == CORRECTIVE_ACTION_ENTITY_TYPE)
                {
                    await _finishedTasksCorrectiveActionUseCase.Execute(task.EntityID);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public async Task Execute(TaskModel.Task task, string observation, DateTime overdureTime, int TaskID)
        {
            var getTask = _taskRepository.Get(TaskID);
            var users   = _userReopository.GetAll();
            var idUser  = "";

            foreach (var u in users)
            {
                var roles = u.Roles;
                foreach (var r in roles)
                {
                    if (r == "Aprobador de AC")
                    {
                        idUser = u.Id;
                    }
                }
            }
            var ResponsibleUser = _userReopository.Get(idUser);
            var email           = ResponsibleUser.Email;

            List <string> EmailsToNotify = new List <string>();

            EmailsToNotify.Add(email);
            int taskStateID = 0;
            var url         = $"{_emailSettings.Url}/quality/tasks/{ TaskID }/detail";
            var content     = $"<html>" +
                              $"<body>" +
                              $"<p>Estimado Usuario: </p>" +
                              $"<p>Se solicita extensión fecha de vencimiento de una tarea de Acción Correctiva. </p>" +

                              $"<p><b>Id tarea: </b>{getTask.TaskID}.</p>" +
                              $"<p><b>Descripción de la tarea: </b>{getTask.Description}.</p>" +
                              $"<p><b>Responsable asignado a la tarea: </b>{getTask.ResponsibleUser.FullName}.</p>" +
                              $"<p><b>Fecha vencimiento de la tarea: </b>{getTask.ImplementationPlannedDate.ToString("dd/MM/yyyy")}.</p>" +
                              $"<p><b>Estado: </b>{getTask.TaskState.Name}.</p>" +
                              $"<p><b>Fecha vencimiento solicitada: </b>{task.overdureTime.Value.ToString("dd/MM/yyyy")}.</p>" +
                              $"<p>Puede acceder desde aquí: <a href={url}>Ver tarea de Acción Correctiva</a>.</p>" +
                              $"<p></p>" +
                              $"<p>Saludos cordiales.</p>" +
                              $"</body>" +
                              $"</html>";
            await _emailSender.SendEmailAsync(EmailsToNotify.ToArray(), new List <string>().ToArray(), new List <string>().ToArray(), "Solicitud extensión de fecha de vencimiento de tarea de AC", content, true, System.Net.Mail.MailPriority.High);

            var allTaskStates = _getAllTaskStates.Execute();

            foreach (var s in allTaskStates)
            {
                if (s.Code == "EFV")
                {
                    taskStateID = s.TaskStateID;
                }
            }


            getTask.TaskStateID = taskStateID;
            _taskRepository.Update(getTask);
        }
        public TaskOutput Execute(TaskModel.Task task)
        {
            var taskEntity = _taskRepository.Get(task.TaskID);

            if (task != null)
            {
                taskEntity.Description               = task.Description;
                taskEntity.ResponsibleUserID         = task.ResponsibleUserID;
                taskEntity.ImplementationPlannedDate = task.ImplementationPlannedDate;
                taskEntity.RequireEvidence           = task.RequireEvidence;
                return(_mapper.Map <TaskModel.Task, TaskOutput>(_taskRepository.Update(task)));
            }
            throw new EntityNotFoundException(taskEntity.TaskID, "No se encontró una tarea con ese ID");
        }