private async Task <Orden> AgregarOrden(Orden objCompra) { Orden orden = new Orden(); try { orden.items = new List <Orden_Items>(); orden.Id = orden.GetInternalId("ORD"); orden.fecha_orden = System.DateTime.Now; orden.id_cliente = objCompra.id_cliente; orden.id_proveedor = objCompra.id_proveedor; foreach (var item in objCompra.items) { Orden_Items items = new Orden_Items(); items.Id = items.GetInternalId("ITEM"); items.id_producto = item.id_producto; items.cantidad = item.cantidad; items.precio_unitario = item.precio_unitario; items.estado_item = item.estado_item; orden.items.Add(items); } //ICollection<Orden> nuevoRegistro = await _unitOfWork_Orden.Service_Commands <Orden>().InsertOneAsync(orden); } catch (Exception error) { throw new Exception(error.InnerException + error.Message); } return(orden); }
public async Task <Pedido> NuevoPedido(List <ObjEntradaProducto> productos) { List <Orden> ordenes = new List <Orden>(); List <string> proveedoresNoRepetidos = new List <string>(); proveedoresNoRepetidos.Add(""); foreach (var item in productos) { Orden objOrden = new Orden(); Orden_Items objItem = new Orden_Items(); objOrden.items = new List <Orden_Items>(); if (!proveedoresNoRepetidos.Contains(item.id_proveedor)) { proveedoresNoRepetidos.Add(item.id_proveedor); objOrden.id_cliente = item.id_cliente; objOrden.id_proveedor = item.id_proveedor; objItem.id_producto = item.id_producto; objItem.cantidad = item.cantidad; objItem.precio_unitario = item.precio_unitario; objOrden.items.Add(objItem); ordenes.Add(objOrden); } else { objOrden = ordenes.Find(x => x.id_proveedor == item.id_proveedor); objOrden.id_cliente = item.id_cliente; objOrden.id_proveedor = item.id_proveedor; objItem.id_producto = item.id_producto; objItem.cantidad = item.cantidad; objItem.precio_unitario = item.precio_unitario; objOrden.items.Add(objItem); } } List <Orden> respuesta = new List <Orden>(); //OrdenesController ordenNueva = new OrdenesController(_unitOfWork_Orden, _unitOfWork, _unitOfWork_orden, _unitOfWork_estado_item); for (int i = 0; i < ordenes.Count(); i++) { respuesta.Add(await AgregarOrden(ordenes[i])); } //Crea Pedido de acuerdo a las ordenes asociadas Pedido nvoPedido = new Pedido(); Orden ordenPedido = new Orden(); nvoPedido.id_orden = new List <string>(); nvoPedido.fecha_pedido = System.DateTime.Now; foreach (var item in respuesta) { nvoPedido.id_orden.Add(item.Id); } await this.CrearPedido(nvoPedido); return(nvoPedido); }