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); }