コード例 #1
0
        public IActionResult PostCrearPlanAccion(PlanAccionRequest request)
        {
            var service  = new CrearPlanAccionService(_unitOfWork, _actividadRepository, _planAccionRepository, _plazoAperturaRepository, _mailServer);
            var response = service.Handle(request);

            return(Ok(response));
        }
コード例 #2
0
        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));
        }
コード例 #3
0
        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");
        }
コード例 #4
0
        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");
        }
コード例 #5
0
        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");
        }
コード例 #6
0
        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");
        }
コード例 #7
0
        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();
        }