public IActionResult PostCrearPlanAccion(PlanAccionRequest request) { var service = new CrearPlanAccionService(_unitOfWork, _actividadRepository, _planAccionRepository, _plazoAperturaRepository, _mailServer); var response = service.Handle(request); return(Ok(response)); }
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 void NoPuedoCrearPlanDeAccionSiNoExisteUnaActividad() { var item = new ItemPlanRequest(0, "Se describe aqui", "Se describe lo que se hizo", "loquesea/dir"); var items = new List <ItemPlanRequest>(); items.Add(item); var request = new PlanAccionRequest(2, items); var response = _crearPlanAccionService.Handle(request); response.Message.Should().Be("Debe tener una actividad asignada para crear una plan de acciones"); }
public void NoPuedoCrearPlanDeAccionSiNoExisteElPlazoDeApertura() { var actividad = ActividadMother.CreateActividad(); _actividadRepository.Add(actividad); _dbContext.SaveChanges(); var item = new ItemPlanRequest(0, "Se describe aqui", "Se describe lo que se hizo", "loquesea/dir"); var items = new List <ItemPlanRequest>(); items.Add(item); var request = new PlanAccionRequest(1, items); var response = _crearPlanAccionService.Handle(request); response.Message.Should().Be("Error: No se encontro ningun plazo de apertura"); }
public void PuedoCrearPlanDeAccion() { var actividad = ActividadMother.CreateActividad(); _actividadRepository.Add(actividad); _dbContext.SaveChanges(); var plazo = PlazoAperturaMother.CreatePlazoApertura("123313"); var plazoRequest = new PlazoAperturaRequest("123313", plazo.FechaInicio, plazo.FechaFin); _plazoAperturaService.CrearPlazoApertura(plazoRequest).Message.Should().Be("El plazo fue correctamente ingresado"); var item = new ItemPlanRequest(0, "Se describe aqui", "Se describe lo que se hizo", "loquesea/dir"); var items = new List <ItemPlanRequest>(); items.Add(item); var request = new PlanAccionRequest(1, items); var response = _crearPlanAccionService.Handle(request); response.Message.Should().Be("Plan de accion registrado correctamente"); }
public void NoPuedoCrearPlanDeAccionNoEstaDentroDelPlazoDeApertura() { var actividad = ActividadMother.CreateActividad(); _actividadRepository.Add(actividad); _dbContext.SaveChanges(); var plazo = PlazoAperturaMother.CreatePlazoAperturaVencido("123313"); var plazoRequest = new PlazoAperturaRequest("123313", plazo.FechaInicio, plazo.FechaFin); _plazoAperturaService.CrearPlazoApertura(plazoRequest).Message.Should().Be("El plazo fue correctamente ingresado"); var item = new ItemPlanRequest(0, "Se describe aqui", "Se describe lo que se hizo", "loquesea/dir"); var items = new List <ItemPlanRequest>(); items.Add(item); var request = new PlanAccionRequest(1, items); var response = _crearPlanAccionService.Handle(request); response.Message.Should().Be("Error: La fecha no esta dentro del plazo establecido por el jefe de departamento"); }
public async Task PuedeCrearPlanAccionTestAsync() { // var httpClient = _factory.CreateClient(); var context = _factory.CreateContext(); var actividadToAdd = ActividadMother.CreateActividad(); context.Actividades.Add(actividadToAdd); context.SaveChanges(); var plazoToAdd = PlazoAperturaMother.CreatePlazoApertura("123313"); var plazoRequest = new PlazoAperturaRequest("123313", plazoToAdd.FechaInicio, plazoToAdd.FechaFin); var jsonObject = JsonConvert.SerializeObject(plazoRequest); var content = new StringContent(jsonObject, Encoding.UTF8, "application/json"); var responseHttp = await _client.PostAsync("api/PlazoApertura", content); responseHttp.StatusCode.Should().Be(HttpStatusCode.OK); var item = new ItemPlanRequest(0, "Se describe aqui", "Se describe lo que se hizo", "loquesea/dir"); var items = new List <ItemPlanRequest>(); items.Add(item); var request = new PlanAccionRequest( 1, items ); jsonObject = JsonConvert.SerializeObject(request); content = new StringContent(jsonObject, Encoding.UTF8, "application/json"); responseHttp = await _client.PostAsync("api/PlanAccion", content); responseHttp.StatusCode.Should().Be(HttpStatusCode.OK); var respuesta = await responseHttp.Content.ReadAsStringAsync(); respuesta.Should().Contain("Plan de accion registrado correctamente"); var plan = context.Planes.FirstOrDefault(); plan.Should().NotBeNull(); }