public Response Crear(TerceroEmpleadoRequest request)
        {
            Tercero tercero = this._unitOfWork.TerceroRepository.
                              FindFirstOrDefault(tercero => tercero.Nit == request.NitTercero);

            if (tercero == null)
            {
                return(new Response
                {
                    Mensaje = $"La identificación {request.NitTercero}," +
                              $" no se encuentra registrada hasta el momento"
                });
            }
            TerceroEmpleado empleado = this._unitOfWork.TerceroEmpleadoRepository.
                                       FindBy(empleado => empleado.Tercero.Nit == request.NitTercero,
                                              includeProperties: "Tercero").FirstOrDefault();

            if (empleado != null)
            {
                return(new Response
                {
                    Mensaje = $"No se pudo registrar el empleado porque ya esta en el sistema"
                });
            }
            empleado = new TerceroEmpleado(tercero);
            this._unitOfWork.TerceroEmpleadoRepository.Add(empleado);
            this._unitOfWork.Commit();
            return(new Response
            {
                Mensaje = "Empleado registrado con éxito",
                Data = new TerceroEmpleadoRequest().Map(empleado)
            });
        }
        public IActionResult PostEmpleado(TerceroEmpleadoRequest request)
        {
            var response = new TerceroEmpleadoCrearService(this._unitOfWork)
                           .Crear(request);

            if (response.Data == null)
            {
                return(BadRequest(response.Mensaje));
            }
            return(Ok(response));
        }
        public void Setup()
        {
            var optionsInMemory = new DbContextOptionsBuilder <DulcesYmasContext>().
                                  UseInMemoryDatabase("DulcesYmas").Options;

            _context    = new DulcesYmasContext(optionsInMemory);
            _unitOfWork = new UnitOfWork(_context);

            #region CrearCategorias
            new ProductoCategoriaCrearService(this._unitOfWork).Crear(new ProductoCategoriaRequest.
                                                                      ProductoCategoriaRequestBuilder("Comestibles").SetId(1).Build());
            #endregion

            #region CrearSubCategorias
            new ProductoCategoriaAgregarSubCategoriaService(this._unitOfWork).Agregar(new ProductoSubCategoriaRequest.
                                                                                      ProductoSubCategoriaRequestBuilder("Materia prima").SetId(1).SetIdCategoria(1).Build());
            #endregion

            utilities = new Utilities();
            #region CrearMateriasPrimas
            utilities.CrearProducto(new ProductoRequest.ProductoRequestBuilder(1, "Dulce de Ñame").
                                    SetCantidad(15).SetCostoUnitario(500).SetUnidadDeMedida(UnidadDeMedida.Kilos).SetTipo(Tipo.MateriaPrima).
                                    SetPorcentajeDeUtilidad(0).SetEspecificacion(Especificacion.Duro).SetTipo(Tipo.ParaFabricar).
                                    SetSubCategoria(1).Build(), new ProductoCrearService(_unitOfWork));

            utilities.CrearProducto(new ProductoRequest.ProductoRequestBuilder(2, "Ñame").
                                    SetCantidad(15).SetCostoUnitario(500).SetUnidadDeMedida(UnidadDeMedida.Kilos).SetTipo(Tipo.MateriaPrima).
                                    SetPorcentajeDeUtilidad(0).SetEspecificacion(Especificacion.MateriaPrima).
                                    SetSubCategoria(1).Build(), new ProductoCrearService(_unitOfWork));


            new ProductoCrearService(_unitOfWork).Crear(new ProductoRequest.ProductoRequestBuilder(3, "Leche").
                                                        SetCantidad(95).SetCostoUnitario(1700).SetUnidadDeMedida(UnidadDeMedida.Litros).SetTipo(Tipo.MateriaPrima).
                                                        SetPorcentajeDeUtilidad(0).SetEspecificacion(Especificacion.MateriaPrima).
                                                        SetSubCategoria(1).Build());

            new ProductoCrearService(_unitOfWork).Crear(new ProductoRequest.ProductoRequestBuilder(4, "Azúcar").
                                                        SetCantidad(30).SetCostoUnitario(1300).SetUnidadDeMedida(UnidadDeMedida.Kilos).SetTipo(Tipo.MateriaPrima).
                                                        SetPorcentajeDeUtilidad(0).SetEspecificacion(Especificacion.MateriaPrima).
                                                        SetSubCategoria(1).Build());
            #endregion
            #region CrearDetallesDeFabricacion
            List <FabricacionDetalleRequest> detalles =
                new List <FabricacionDetalleRequest>();
            detalles.Add(new FabricacionDetalleRequest("ÑAME", 16));
            detalles.Add(new FabricacionDetalleRequest("Leche", 95));
            detalles.Add(new FabricacionDetalleRequest("Azúcar", 30));

            fabricacionDetalleRequestsConErrorEnPrimerIndice = detalles;

            List <FabricacionDetalleRequest> detalles1 =
                new List <FabricacionDetalleRequest>();
            detalles1.Add(new FabricacionDetalleRequest("ÑAME", 15));
            detalles1.Add(new FabricacionDetalleRequest("Leche", 96));
            detalles1.Add(new FabricacionDetalleRequest("Azúcar", 30));

            fabricacionDetalleRequestsConErrorEnSegundoIndice = detalles1;

            List <FabricacionDetalleRequest> detalles2 =
                new List <FabricacionDetalleRequest>();
            detalles2.Add(new FabricacionDetalleRequest("ÑAME", 15));
            detalles2.Add(new FabricacionDetalleRequest("Leche", 95));
            detalles2.Add(new FabricacionDetalleRequest("Azúcar", 45));

            fabricacionDetalleRequestsConErrorEnUltimoIndice = detalles2;

            List <FabricacionDetalleRequest> detalles3 =
                new List <FabricacionDetalleRequest>();
            detalles3.Add(new FabricacionDetalleRequest("ÑAME", 15));
            detalles3.Add(new FabricacionDetalleRequest("Leche", 95));
            detalles3.Add(new FabricacionDetalleRequest("Azúcar", 30));

            fabricacionDetalleRequestsCorrectos = detalles3;
            #endregion
            #region CrearTerceros

            new TerceroCrearService(_unitOfWork).
            CrearTercero(new TerceroRequest("1065840833", "Duvan Guia"));
            TerceroEmpleadoRequest empleadoRequest = new TerceroEmpleadoRequest
                                                         ("1065840833");
            new TerceroEmpleadoCrearService(_unitOfWork).Crear(empleadoRequest);
            #endregion
        }