public PlanAccionResponse Handle(PlanAccionRequest request) { var verificarPlazoAperturaService = new VerificarPlazoAperturaService(_plazoAperturaRepository); var planAccion = _planAccionRepository.FindByActividad(request.ActividadId); if (planAccion != null) { return(new PlanAccionResponse("Ya existe un plan de acción para esta actividad", "Error", planAccion)); } var actividad = _actividadRepository.Find(request.ActividadId); if (actividad == null) { return(new PlanAccionResponse("Debe tener una actividad asignada para crear una plan de acciones", "Error", planAccion)); } var verificacionPlazoApertura = verificarPlazoAperturaService.Handle(actividad.Asignador.Identificacion); if (verificacionPlazoApertura.Contains("Error")) { return(new PlanAccionResponse(verificacionPlazoApertura, "Error", null)); } planAccion = new PlanAccion(); var errors = canConvertToItemPlanList(request.Items); if (errors.Any()) { return(new PlanAccionResponse(StringUtils.ToString(errors), "Error", planAccion)); } var items = ConvertToItemPlanList(request.Items); errors.AddRange(planAccion.CanDeliver(items, actividad)); if (errors.Any()) { return(new PlanAccionResponse(StringUtils.ToString(errors), "Error", planAccion)); } planAccion.Deliver(items, actividad); var response = ""; try { _planAccionRepository.Add(planAccion); response = "Plan de accion registrado correctamente"; actividad.ChangeToPlaneada(); _actividadRepository.Update(actividad); } catch (Exception e) { return(new PlanAccionResponse("No se pudo registrar", "Error", null)); } _unitOfWork.Commit(); if (actividad.Responsable == null) { return(new PlanAccionResponse("No trajo docente", "Error", planAccion)); } _emailServer.Send("Nueva plan registrado", $"Se registro el plan de acciones", actividad.Responsable.Email); return(new PlanAccionResponse(response, "Ok", planAccion)); }
public ItemPlanResponse RegistrarItem(ItemPlanRequest request) { var planAccion = _planAccionRepository.Find(request.PlanId); if (planAccion == null) { return(new ItemPlanResponse("No se encontró el plan de acción", null)); } var verificacionPlazoApertura = verificarPlazoAperturaService.Handle(planAccion.Actividad.Asignador.Identificacion); if (verificacionPlazoApertura.Contains("Error")) { return(new ItemPlanResponse(verificacionPlazoApertura, null)); } var errors = ItemPlanUtils.CanConvertToItemPlan(request); if (errors.Any()) { var result = String.Join(", ", errors.ToArray()); return(new ItemPlanResponse(result, null)); } var item = ItemPlanUtils.ConvertToItemPlan(request); var response = ""; try { _itemPlanRepository.Add(item); response = "Item registrado correctamente"; } catch (Exception e) { response = "No se pudo registrar"; } _unitOfWork.Commit(); return(new ItemPlanResponse(response, item)); }