public async Task <ActionResult> Create(CategoriaProductoServicesModel CategoriaProductoServicesModel)
        {
            ServiceResult result;

            if (!ModelState.IsValid)
            {
                return(View());
            }

            try
            {
                result = await _CategoriaService.SaveCategoria(new CategoriaProductoServicesModel()
                {
                    Nombre = CategoriaProductoServicesModel.Nombre
                });

                if (!result.success)
                {
                    ViewData["Message"] = result.message;
                    return(View());
                }
                return(RedirectToAction(nameof(Index)));
            }
            catch
            {
                return(View());
            }
        }
        public async Task <ServiceResultCategoriaProducto> SaveCategoria(CategoriaProductoServicesModel oCategoria)
        {
            ServiceResultCategoriaProducto result = new ServiceResultCategoriaProducto();

            try
            {
                if (await ValidateCategoria(oCategoria.Nombre))
                {
                    result.success = false;
                    result.message = $"Esta categoria: {oCategoria.Nombre} ya esta registrado";
                    return(result);
                }

                CategoriaProducto newCategoriaProducto = new CategoriaProducto()
                {
                    Nombre = oCategoria.Nombre
                };
                await _categoriaProductoRep.Add(newCategoriaProducto);

                result.message = await _categoriaProductoRep.SaveCategoria() ? "Categoria Agregada" : "Error agregando la categoria";

                oCategoria.Categoria_Producto_Id = newCategoriaProducto.Categoria_Producto_Id;

                result.Data = oCategoria;
            }
            catch (Exception e) { _logger.LogError($"Error: {e.Message}"); result.success = false; result.message = "Error agregando la informacion de la categoria"; }

            return(result.Data);
        }
        public async Task <ServiceResultCategoriaProducto> UpdateCategoria(CategoriaProductoServicesModel oCategoria)
        {
            ServiceResultCategoriaProducto result = new ServiceResultCategoriaProducto();

            try
            {
                var categoriaUpdate = await _categoriaProductoRep.GetCategoriaByID(oCategoria.Categoria_Producto_Id);

                categoriaUpdate.Nombre = oCategoria.Nombre;

                _categoriaProductoRep.UpdateCategoria(categoriaUpdate);

                await _categoriaProductoRep.SaveCategoria();

                result.message = await _categoriaProductoRep.SaveCategoria() ? "Categoria editada" : "Error editando la categoria";

                result.Data = oCategoria;
            }
            catch (Exception e)
            {
                _logger.LogError($"Error {e.Message}");

                result.success = false;
                result.message = "Error editando la categoria";
            }

            return(result.Data);
        }
        public async Task <ServiceResultCategoriaProducto> DeleteCategoria(CategoriaProductoServicesModel oCategoria)
        {
            ServiceResultCategoriaProducto result = new ServiceResultCategoriaProducto();

            try
            {
                var categoriaDelete = await _categoriaProductoRep.GetCategoriaByID(oCategoria.Categoria_Producto_Id);

                categoriaDelete.Categoria_Producto_Id = oCategoria.Categoria_Producto_Id;
                categoriaDelete.Deleted = true;

                _categoriaProductoRep.UpdateCategoria(categoriaDelete);

                await _categoriaProductoRep.SaveCategoria();

                result.message = await _categoriaProductoRep.SaveCategoria() ? "Categoria eliminada" : "Error eliminando la categoria";

                result.Data = oCategoria;
            }
            catch (Exception e)
            {
                _logger.LogError($"Error{e.Message}");
                result.success = false;
                result.message = "Error en la eliminacion de la categoria";
            }

            return(result);
        }