private void ModelErrors(Adoption adoption) { try { List <Adoption> userAdoptions = context.Adoption.Where(a => a.UserId == adoption.UserId && a.AdoptionStatusId == AdoptionStatus.RETURNED && a.CreatedAt <= DateTime.Today.AddMonths(1) ).ToList(); if (userAdoptions.Count > 0) { ModelState.AddModelError("adoption.UserId", "Usuários que devolveram animais devem aguardar um mês antes de iniciar uma nova adoção."); } AdoptionQueue queue = context.AdoptionQueue.Find(adoption.AdoptionQueueId); if (queue == null) { ModelState.AddModelError("adoption.AdoptionQueueId", "Fila de adoção não enontrada. É necessário estar numa fila para iniciar uma adoção."); } if (!queue.IsActive) { ModelState.AddModelError("adoption.AdoptionQueueId", "Essa fila de adoção foi cancelada."); } if (queue.AnimalId != adoption.AnimalId || queue.UserId != adoption.UserId) { ModelState.AddModelError("adoption.AdoptionQueueId", "Fila inválida: Animal ou adotante não podem ser diferentes da fila."); } Adoption queueAdoption = context.Adoption.FirstOrDefault(a => a.AdoptionQueueId == queue.Id); if (queueAdoption != null) { ModelState.AddModelError("adoption.AdoptionQueueId", "Fila inválida: Essa fila já gerou uma adoção."); } IList <Adoption> animalAdoptions = context.Adoption.Where(a => a.AnimalId == adoption.AnimalId).ToList(); if (animalAdoptions.Any(a => a.AdoptionStatusId == AdoptionStatus.FINISHED || a.AdoptionStatusId == AdoptionStatus.WAITING)) { ModelState.AddModelError("adoption.AnimalId", "Esse animal já foi adotado ou está em processo de adoção."); } if (adoption.CreatedAt == null) { ModelState.AddModelError("adoption.CreatedAt", "Data da criação obrigatória."); } } catch (Exception e) { ModelState.AddModelError("Message", e.Message); } }
public IHttpActionResult Get(int Id, string type = "Id") { try { if (type == TYPE_BY_ID) { AdoptionQueue adoptionQueue = context.AdoptionQueue .Include(a => a.Animal) .Include(a => a.User) .FirstOrDefault(a => a.Id == Id) ; if (adoptionQueue == null) { return(NotFound()); } return(Ok(adoptionQueue)); } else if (type == TYPE_BY_ADOPTER) { IList <AdoptionQueue> list = context.AdoptionQueue .Include(a => a.Animal) .Include(a => a.User) .Where(a => a.UserId == Id) .ToList() ; return(Ok(list)); } else if (type == TYPE_BY_ANIMAL) { IList <AdoptionQueue> list = context.AdoptionQueue .Include(a => a.Animal) .Include(a => a.User) .Where(a => a.AnimalId == Id) .ToList() ; return(Ok(list)); } else { return(BadRequest("Tipo inválido")); } } catch (Exception) { return(BadRequest()); } }
private void ModelErrors(AdoptionQueue adoptionQueue) { try { List <Adoption> userAdoptions = context.Adoption.Where(a => a.UserId == adoptionQueue.UserId && a.AdoptionStatusId == AdoptionStatus.RETURNED && a.CreatedAt <= DateTime.Today.AddMonths(1) ).ToList(); if (userAdoptions.Count > 0) { ModelState.AddModelError("adoptionQueue.UserId", "Usuários que devolveram animais devem aguardar um mês antes de iniciar uma nova adoção."); } IList <Adoption> adoptions = context.Adoption.Where(a => a.AnimalId == adoptionQueue.AnimalId).ToList(); if (adoptions != null) { if (adoptions.Any(adoption => adoption.AdoptionStatusId == AdoptionStatus.FINISHED)) { ModelState.AddModelError("adoptionQueue.AnimalId", "Esse animal já foi adotado."); } if (adoptions.Any(adoption => adoption.AdoptionStatusId == AdoptionStatus.WAITING)) { ModelState.AddModelError("adoptionQueue.AnimalId", "Esse animal já está em processo de adoção."); } } AdoptionQueue queue = context.AdoptionQueue.FirstOrDefault(q => q.IsActive == true && q.UserId == adoptionQueue.UserId && q.AnimalId == adoptionQueue.AnimalId ); if (queue != null) { ModelState.AddModelError("adoptionQueue.AnimalId", "Esse animal já esta na fila de adoção desse usuário."); } } catch (Exception e) { ModelState.AddModelError("Message", e.Message); } }
public IHttpActionResult Put(int Id, [FromBody] AdoptionQueue adoptionQueue) { try { if (Id != adoptionQueue.Id) { return(BadRequest("Os IDs de identificação não podem ser diferentes")); } AdoptionQueue adoptionQueueOld = context.AdoptionQueue.Find(Id); if (adoptionQueueOld == null) { return(NotFound()); } Adoption adoption = context.Adoption.FirstOrDefault(a => a.AdoptionQueueId == Id); if ( adoption != null && (adoption.AdoptionStatusId == AdoptionStatus.FINISHED || adoption.AdoptionStatusId == AdoptionStatus.WAITING) ) { ModelState.AddModelError("adoptionQueue.AnimalId", "Esse animal já foi adotado ou está em processo de adoção e sua fila não pode mais se alterada."); } if (!ModelState.IsValid) { return(BadRequest(ModelState)); } adoptionQueueOld.IsActive = adoptionQueue.IsActive; context.AdoptionQueue.Update(adoptionQueueOld); context.SaveChanges(); return(Ok()); } catch (Exception) { return(BadRequest()); } }
public IHttpActionResult Post([FromBody] AdoptionQueue adoptionQueue) { try { ModelErrors(adoptionQueue); if (!ModelState.IsValid) { return(BadRequest(ModelState)); } context.AdoptionQueue.Add(adoptionQueue); context.SaveChanges(); string location = Url.Link("DefaultApi", new { controller = "adoptionqueues", id = adoptionQueue.Id }); return(Created(new Uri(location), adoptionQueue)); } catch (Exception e) { return(BadRequest(e.Message)); } }
public IHttpActionResult Put(int Id, [FromBody] Adoption adoption) { try { if (Id != adoption.Id) { return(BadRequest("Os IDs de identificação não podem ser diferentes")); } Adoption adoptionOld = context.Adoption.Find(Id); if (adoptionOld == null) { return(NotFound()); } if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (adoption.AdoptionStatusId == AdoptionStatus.CANCELED || adoption.AdoptionStatusId == AdoptionStatus.RETURNED) { AdoptionQueue queue = context.AdoptionQueue.Find(adoption.AdoptionQueueId); queue.IsActive = false; context.AdoptionQueue.Update(queue); } adoptionOld.AdoptionStatusId = adoption.AdoptionStatusId; context.Adoption.Update(adoptionOld); context.SaveChanges(); return(Ok()); } catch (Exception e) { return(BadRequest(e.Message)); } }