public IActionResult Get(int id) { DoacaoSopa q = _context.DoacaoSopa.Include(d => d.Doador).Include(d => d.Item).SingleOrDefault(i => i.Id == id); if (q == null) { return(new NotFoundResult()); } DoacaoSopaDTO dto = new DoacaoSopaDTO { Id = q.Id, DataDaDoacao = q.Data, Descricao = q.Descricao, Doador = new DoadorDTOR() { Id = q.Doador.CodDoador, NomeRazaoSocial = q.Doador.GetType() == typeof(PessoaFisica) ? ((PessoaFisica)q.Doador).Nome : ((PessoaJuridica)q.Doador).RazaoSocial, Tipo = q.Doador.GetType() == typeof(PessoaFisica)?"PF":"PJ" }, Quantidade = q.Quantidade, Item = new ItemDTOR() { Id = q.Item.Id, Nome = q.Item.Nome, UnidadeDeMedida = q.Item.UnidadeDeMedida } }; return(new ObjectResult(dto)); }
public async Task <IActionResult> Put(int id, [FromBody] DoacaoSopaDTO dto) { if (id != dto.Id) { return(new BadRequestResult()); } if (ModelState.IsValid) { //corrige fuso horario do js dto.DataDaDoacao = dto.DataDaDoacao.AddHours(-dto.DataDaDoacao.Hour); DoacaoSopa dd = _context.DoacaoSopa.Single(q => q.Id == id); Doador doador = _context.Doador.SingleOrDefault(q => q.CodDoador == dto.Doador.Id); if (doador == null) { ModelState.AddModelError("Doador", "Doador inválido"); return(new BadRequestObjectResult(ModelState)); } Item item = _context.Item.SingleOrDefault(q => q.Id == dto.Item.Id && q.Destino == "SOPA"); if (item == null) { ModelState.AddModelError("Item", "Item inválido"); return(new BadRequestObjectResult(ModelState)); } double diferencaQuantidade = dd.Quantidade - dto.Quantidade; dd.Doador = doador; dd.Data = dto.DataDaDoacao; dd.Descricao = dto.Descricao; dd.Item = item; dd.Quantidade = dto.Quantidade; try { _context.SaveChanges(); Usuario usuario = await _userManager.GetUserAsync(HttpContext.User); //atualiza o estoque if (diferencaQuantidade > 0) { _estoqueManager.DarSaida(usuario, item, diferencaQuantidade); } else if (diferencaQuantidade < 0) { _estoqueManager.DarEntrada(usuario, item, -diferencaQuantidade); } } catch { return(new BadRequestObjectResult(ModelState)); } return(new ObjectResult(dto)); } else { return(new BadRequestObjectResult(ModelState)); } }
public async Task <IActionResult> Post([FromBody] DoacaoSopaDTO dto) { if (ModelState.IsValid) { Doador doador = _context.Doador.SingleOrDefault(q => q.CodDoador == dto.Doador.Id); if (doador == null) { ModelState.AddModelError("Doador", "Doador inválido"); return(new BadRequestObjectResult(ModelState)); } Item item = _context.Item.SingleOrDefault(q => q.Id == dto.Item.Id && q.Destino == "SOPA"); if (item == null) { ModelState.AddModelError("Item", "Item inválido"); return(new BadRequestObjectResult(ModelState)); } //corrige fuso horario do js dto.DataDaDoacao = dto.DataDaDoacao.AddHours(-dto.DataDaDoacao.Hour); DoacaoSopa novo = new DoacaoSopa() { Doador = doador, Data = dto.DataDaDoacao, Descricao = dto.Descricao, Item = item, Quantidade = dto.Quantidade }; try { _context.DoacaoSopa.Add(novo); _context.SaveChanges(); //atualiza o estoque Usuario usuario = await _userManager.GetUserAsync(HttpContext.User); _estoqueManager.DarEntrada(usuario, item, novo.Quantidade); dto.Id = novo.Id; return(new ObjectResult(dto)); } catch { return(new BadRequestObjectResult(ModelState)); } } return(new BadRequestObjectResult(ModelState)); }
public async Task <IActionResult> Delete(int id) { DoacaoSopa ds = _context.DoacaoSopa .Include(q => q.Item) .Single(q => q.Id == id); double quantidade = ds.Quantidade; Item item = ds.Item; _context.DoacaoSopa.Remove(ds); try { _context.SaveChanges(); //atualiza o estoque Usuario usuario = await _userManager.GetUserAsync(HttpContext.User); _estoqueManager.DarSaida(usuario, item, quantidade); return(new NoContentResult()); } catch { return(new BadRequestResult()); } }