// POST api/Pedido public string PostPedido(UsuarioGustos GustosUsuario) { MensajeAppi msg = new MensajeAppi(); msg = _apiSrv.ElegirGustos(GustosUsuario); return(JsonConvert.SerializeObject(msg)); }
//TODO: Elegir service por json public MensajeAppi ElegirGustos(UsuarioGustos GustosUsuario) { MensajeAppi msj = new MensajeAppi(); try { InvitacionPedido invitado = GetInvitacionPedidoPorToken(GustosUsuario.Token.ToString(), GustosUsuario.IdUsuario); Pedido pedido = ObtenerPedidoPorId(invitado.IdPedido); // Pedido pedido = ObtenerPedidoPorId(ctx.InvitacionPedido.Where(t => t.Token == GustosUsuario.Token && t.IdUsuario == GustosUsuario.IdUsuario).FirstOrDefault().IdPedido); foreach (var gustoSolicitados in GustosUsuario.GustosEmpanadasCantidad) { if (pedido.GustoEmpanada.Where(g => g.IdGustoEmpanada == gustoSolicitados.IdGustoEmpanada).Count() == 0) { msj.Resultado = "ERROR"; msj.Mensaje = "No se pudo efectuar la operacion porque uno o mas pedidos no estan disponibles"; return(msj); } } if (pedido.EstadoPedido.Nombre == "Cerrado") { msj.Resultado = "ERROR"; msj.Mensaje = "No se pudo efectuar la operacion porque el pedido se encuentra cerrado"; return(msj); } foreach (var gusto in pedido.GustoEmpanada) { try { if (pedido.InvitacionPedidoGustoEmpanadaUsuario.Where(p => p.IdUsuario == GustosUsuario.IdUsuario && p.IdGustoEmpanada == gusto.IdGustoEmpanada).Count() > 0) { ctx.InvitacionPedidoGustoEmpanadaUsuario.Remove(ctx.InvitacionPedidoGustoEmpanadaUsuario.Where(i => i.GustoEmpanada.IdGustoEmpanada == gusto.IdGustoEmpanada && i.IdUsuario == GustosUsuario.IdUsuario && i.IdPedido == pedido.IdPedido).FirstOrDefault()); } var cantidadEmpanada = GustosUsuario.GustosEmpanadasCantidad.Where(c => c.IdGustoEmpanada == gusto.IdGustoEmpanada).FirstOrDefault().Cantidad; if (cantidadEmpanada != 0) { InvitacionPedidoGustoEmpanadaUsuario ipgeu = new InvitacionPedidoGustoEmpanadaUsuario { Cantidad = cantidadEmpanada, GustoEmpanada = gusto, IdUsuario = GustosUsuario.IdUsuario, }; pedido.InvitacionPedidoGustoEmpanadaUsuario.Add(ipgeu); } } catch (Exception e) { if (pedido.InvitacionPedidoGustoEmpanadaUsuario.Where(p => p.IdUsuario == GustosUsuario.IdUsuario && p.IdGustoEmpanada == gusto.IdGustoEmpanada).Count() > 0) { ctx.InvitacionPedidoGustoEmpanadaUsuario.Remove(ctx.InvitacionPedidoGustoEmpanadaUsuario.Where(i => i.GustoEmpanada.IdGustoEmpanada == gusto.IdGustoEmpanada && i.IdUsuario == GustosUsuario.IdUsuario && i.IdPedido == pedido.IdPedido).FirstOrDefault()); } msj.Resultado = "ERROR"; msj.Mensaje = "No se pudo efectuar la operacion porque " + e.ToString(); return(msj); } } var invitacion = ctx.InvitacionPedido.Where(i => i.IdPedido == pedido.IdPedido && i.IdUsuario == GustosUsuario.IdUsuario).FirstOrDefault(); invitacion.Completado = true; ctx.SaveChanges(); msj.Resultado = "OK"; msj.Mensaje = "Gustos elegidos satisfactoriamente"; return(msj); } catch (NullReferenceException) { msj.Resultado = "ERROR"; msj.Mensaje = "No se pudo efectuar la operacion porque el usuario es invalido"; return(msj); } }