public IActionResult Registrar([FromBody] RegistroModel registroModel) { ResponseModel responseModel = new ResponseModel(); try { if (registroModel == null) { responseModel.Codigo = CodeEN.Warning; responseModel.Mensaje = "Datos inválidos"; return(BadRequest(responseModel)); } Tuple <Boolean, String> Valid = registroModel.Validate(); if (!Valid.Item1) { responseModel.Codigo = CodeEN.Warning; responseModel.Mensaje = Valid.Item2; return(BadRequest(responseModel)); } OrdenBL ordenBL = new OrdenBL(); DetalleOrdenBL detalleOrdenBL = new DetalleOrdenBL(); DetalleCarritoBL detalleCarritoBL = new DetalleCarritoBL(); String carritoId = this.HttpContext.User.Claims.FirstOrDefault(x => x.Type == ClaimTypes.GivenName)?.Value; if (String.IsNullOrEmpty(carritoId)) { responseModel.Codigo = CodeEN.Error; responseModel.Mensaje = "Sesión expirada"; return(Unauthorized(responseModel)); } Int32 CarritoId = Int32.Parse(carritoId); List <DetalleCarritoProducto> lstDetalleCarritoProductos = detalleCarritoBL.ListarPorCliente(CarritoId); if (lstDetalleCarritoProductos != null && lstDetalleCarritoProductos.Count > 0) { Orden orden = new Orden { ClienteTarjetaId = registroModel.ClienteTarjetaId, PrecioTotal = lstDetalleCarritoProductos.Sum(x => x.PrecioTotal) }; Int32 OrdenId = ordenBL.Registrar(orden); if (OrdenId > 0) { foreach (var detalleCarritoProducto in lstDetalleCarritoProductos) { DetalleOrden detalleOrden = new DetalleOrden { OrdenId = OrdenId, ProductoId = detalleCarritoProducto.ProductoId, Cantidad = detalleCarritoProducto.Cantidad }; detalleOrdenBL.Registrar(detalleOrden); } detalleCarritoBL.EliminarPorCarrito(CarritoId); responseModel.Codigo = CodeEN.Success; responseModel.Mensaje = "Se realizó la compra de los productos con éxito"; return(Ok(responseModel)); } else { responseModel.Codigo = CodeEN.Error; responseModel.Mensaje = "No se pudo realizar la compra de los productos"; return(StatusCode(StatusCodes.Status500InternalServerError, responseModel)); } } else { responseModel.Codigo = CodeEN.Error; responseModel.Mensaje = "No existe ningún producto en el carrito de compras"; return(NotFound(responseModel)); } } catch (Exception ex) { responseModel.Codigo = CodeEN.Exception; responseModel.Mensaje = "Ocurrió una excepción"; return(StatusCode(StatusCodes.Status500InternalServerError, responseModel)); } }
public HomeController() { _ordenBL = new OrdenBL(); }