public async Task <bool> Remove(int id)
        {
            StockRecursoMaterial entity = await _stockRecursoMaterialRepository.GetBy(s => s.Id == id, s => s.IdRecursoMaterialNavigation);

            if (!await _servicioRecursoRepository.Any(s => s.Active == true && s.IdRecurso == entity.IdRecursoMaterialNavigation.IdRecurso && s.IdUbicacion == entity.IdUbicacion) &&
                !await _recursoAsignadoRepository.Any(s => s.Active == true && (s.IdRecurso1 == entity.IdRecursoMaterialNavigation.IdRecurso || s.IdRecurso2 == entity.IdRecursoMaterialNavigation.IdRecurso) && s.IdUbicacion == entity.IdUbicacion)
                )
            {
                entity.Active      = false;
                entity.RemovalDate = DateTime.Now;

                await _stockRecursoMaterialRepository.Update(id, entity);

                var recursoMaterial = await _recursoMaterialRepository.GetBy(s => s.Id == entity.IdRecursoMaterial, s => s.IdRecursoNavigation);

                if (await _stockRecursoMaterialRepository.Any(s => s.Active == true && s.IdRecursoMaterial == recursoMaterial.Id && s.CantidadDisponible > 0))
                {
                    recursoMaterial.IdRecursoNavigation.IdEstado = EstadosEnum.Disponible.ToInt();
                    await _recursoMaterialRepository.Update(recursoMaterial);
                }
                else
                {
                    recursoMaterial.IdRecursoNavigation.IdEstado = EstadosEnum.Asignado.ToInt();
                    await _recursoMaterialRepository.Update(recursoMaterial);
                }

                return(true);
            }

            else
            {
                return(false);
            }
        }
        public async Task <StockRecursoMaterialDTO> Update(UsuarioDTO userLogged, int id, StockRecursoMaterialDTO dto)
        {
            StockRecursoMaterial entity = _mapper.Map <StockRecursoMaterial>(dto);

            entity.UpdateDate   = DateTime.Now;
            entity.UpdateUserId = userLogged.Id;

            var entityOG = await _stockRecursoMaterialRepository.GetById(id);

            entity.CreationDate   = entityOG.CreationDate;
            entity.CreationUserId = entityOG.CreationUserId;
            entity.Active         = true;
            entity.IdEmpresa      = userLogged.IdEmpresa;

            if (dto.CantidadTotal < entityOG.CantidadDisponible)
            {
                entity.CantidadDisponible = entity.CantidadTotal - (entityOG.CantidadTotal - entityOG.CantidadDisponible);
            }
            else
            {
                entity.CantidadDisponible = entityOG.CantidadDisponible + (entity.CantidadTotal - entityOG.CantidadTotal);
            }

            entity = await _stockRecursoMaterialRepository.Update(id, entity);

            var entityDTO = _mapper.Map <StockRecursoMaterialDTO>(entity);

            var recursoMaterial = await _recursoMaterialRepository.GetBy(s => s.Id == dto.IdRecursoMaterial, s => s.IdRecursoNavigation);

            if (await _stockRecursoMaterialRepository.Any(s => s.Active == true && s.IdRecursoMaterial == recursoMaterial.Id && s.CantidadDisponible > 0))
            {
                recursoMaterial.IdRecursoNavigation.IdEstado = EstadosEnum.Disponible.ToInt();
                await _recursoMaterialRepository.Update(recursoMaterial);
            }
            else
            {
                recursoMaterial.IdRecursoNavigation.IdEstado = EstadosEnum.Asignado.ToInt();
                await _recursoMaterialRepository.Update(recursoMaterial);
            }

            return(entityDTO);
        }