public async Task <IHttpActionResult> SetOrder(NewOrderModelIn modelIn) { try { if (modelIn.IsNull()) { return(BadRequest(new ApiMessageResponse <NewOrderModelOut>("Modelo Inválido"))); } if (!ModelState.IsValid) { var errors = ModelState.GetModelErrors(); return(BadRequest(new ApiMessageResponse <NewOrderModelOut>(ModelState.StringifyModelErrors()))); } OrderService _orderService = new OrderService(); var ret = await _orderService.SetNewOrderAsync(modelIn); return(Ok(new ApiMessageResponse <NewOrderModelOut>(ret))); } catch (Exception ex) { return(BadRequest(new ApiMessageResponse <TokenModelOut>(ex.GetFirstException().Message))); } }
public async Task <NewOrderModelOut> SetNewOrderAsync(NewOrderModelIn modelIn) { //cantidad de productos if (modelIn.OrderDetails == null || modelIn.OrderDetails.Count() == 0) { throw new Exception("No existen productos asociados a esta orden."); } if (modelIn.OrderDetails.Count() > 5) { throw new Exception("Solo se pueden registrar hasta 5 productos por orden."); } var retOrderInsert = await db.Database.SqlQuery <GetResponseOrderDb>("sp_new_order @customer_id,@delivery_address", new SqlParameter("customer_id", modelIn.CustomerId), new SqlParameter("delivery_address", modelIn.DeliveryAddress) ).FirstOrDefaultAsync(); if (retOrderInsert == null) { throw new Exception("Error al ingresar la Orden. Error DataBase."); } if (retOrderInsert.state == 0) { throw new Exception($"Error al ingresar la Orden. Error DataBase.{retOrderInsert.msg}"); } foreach (NewOrderDetailModelIn orderDetail in modelIn.OrderDetails) { var retOrderDetailInsert = db.Database.SqlQuery <GetResponseOrderDb>("sp_new_order_detail @order_id,@product_id,@count", new SqlParameter("order_id", retOrderInsert.id), new SqlParameter("product_id", orderDetail.ProductId), new SqlParameter("count", orderDetail.Count) ).FirstOrDefault(); if (retOrderDetailInsert == null) { this.CallBackNewOrder(retOrderInsert.id); throw new Exception("Error al ingresar el detalle de la Orden. Error DataBase."); } if (retOrderDetailInsert.state == 0) { this.CallBackNewOrder(retOrderInsert.id); throw new Exception($"Error al ingresar el detalle de la Orden. Error DataBase.{retOrderDetailInsert.msg}"); } } return(new NewOrderModelOut { Id = retOrderInsert.id }); }