public ActionResult Edit(int id) { ProductModel product = ProductsHelper.ProductToProductModel(new ProductHandler().Get(id)); ViewBag.Products = ProductsHelper.ProductsToProductModels(new ProductHandler().Get()); return(View(product)); }
public static void Initialize(EshopDBContext dBContext) { dBContext.Database.EnsureCreated(); if (dBContext.Carousels.Count() == 0) { IList <Carousel> carousels = CarouselHelper.GenerateCarousel(); foreach (var item in carousels) { dBContext.Carousels.Add(item); } dBContext.SaveChanges(); } if (dBContext.Products.Count() == 0) { IList <Product> products = ProductsHelper.GenerateProducts(); foreach (var item in products) { dBContext.Products.Add(item); } dBContext.SaveChanges(); } }
public static Result <object> ReInsertInventoryToWarehouse(InvoiceDetail detail, IDataRepositoryFactory _repositoryFactory, Warehouse currentWarehouse) { var productUnitsRepo = _repositoryFactory.GetDataRepositories <UnitProductEquivalence>(); var inventoryRepo = _repositoryFactory.GetDataRepositories <Inventory>(); var warehouseMovementRepo = _repositoryFactory.GetDataRepositories <WarehouseMovement>(); var productRepo = _repositoryFactory.GetDataRepositories <Product>(); Inventory currentInventory = inventoryRepo.Get(x => x.Where(y => y.ProductId == detail.ProductId && y.WarehouseId == currentWarehouse.Id && y.Active == true)); if (currentInventory != null) { detail.Product.ProductUnits = detail.Product.ProductUnits ?? productUnitsRepo.GetAll(x => x.Where(y => y.Active && y.ProductId == detail.ProductId)).Data.ToList(); var convertionResult = ProductsHelper.ConvertToProductPrincipalUnit( currentInventory.Quantity, detail.Product.ProductUnits.Where(pu => pu.IsPrimary).FirstOrDefault().UnitId, detail.Product.ProductUnits ); if (convertionResult.Status < 0) { return(convertionResult); } currentInventory.Quantity = (decimal)convertionResult.Data.FirstOrDefault(); convertionResult = ProductsHelper.ConvertToProductPrincipalUnit( detail.Quantity, detail.UnitId.Value, detail.Product.ProductUnits ); if (convertionResult.Status < 0) { return(convertionResult); } detail.Quantity = (decimal)convertionResult.Data.FirstOrDefault(); currentInventory.Quantity += detail.Quantity; Product Product = productRepo.Get(detail.ProductId).Data.FirstOrDefault(); Product.Existence += detail.Quantity; productRepo.Update(Product); inventoryRepo.Update(currentInventory); } else { inventoryRepo.Add(new Inventory() { Active = true, Quantity = detail.Quantity, WarehouseId = currentWarehouse.Id, CreatedBy = detail.CreatedBy, CreatedDate = DateTime.Now, ProductId = detail.ProductId, UnitId = detail.Product.ProductUnits.Where(u => u.IsPrimary).FirstOrDefault().Id }); } return(new Result <object>(0, 0, "ok_msg")); }
public ProductsController() { products = ProductsHelper.linqProducts(); // I'm deleting the shopping cart file everytime the index page is loaded. if (File.Exists(BasketHelper.shoppingCartFile)) { File.Delete(BasketHelper.shoppingCartFile); } }
public Result <object> RemoveEntries(string sequence) { Result <object> result = new Result <object>(-1, -1, "error_msg"); using (var tran = _Context.Database.BeginTransaction()) { try { var entries = _Context.SuppliersReturns.AsNoTracking().Where(x => x.Active == true && x.Sequence == sequence).ToList(); entries.ForEach(e => { e.Active = false; var productUnits = _Context.UnitProductsEquivalences.AsNoTracking().Where(x => x.Active == true && x.ProductId == e.ProductId).ToList(); var convertionResult = ProductsHelper.ConvertToProductPrincipalUnit( e.Quantity, e.UnitId, productUnits ); var inventory = _Context.Inventory.AsNoTracking().FirstOrDefault(x => x.Active == true && x.ProductId == e.ProductId && x.WarehouseId == e.WarehouseId); inventory.Quantity += (decimal)convertionResult.Data.FirstOrDefault(); decimal currentBalance = inventory.Quantity; var movement = new WarehouseMovement() { CurrentBalance = currentBalance, BranchOfficeId = inventory.BranchOfficeId, MovementType = Enums.MovementTypes.IN.ToString(), ProductId = inventory.ProductId, Quantity = -(decimal)convertionResult.Data.FirstOrDefault(), Reference = sequence, UnitId = inventory.UnitId, WarehouseId = inventory.WarehouseId }; _Context.Inventory.Update(inventory); _Context.SaveChanges(); warehouseMovements.Add(movement); }); _Context.SuppliersReturns.UpdateRange(entries); _Context.SaveChanges(); tran.Commit(); result = new Result <object>(0, 0, "ok_msg"); } catch (Exception ex) { tran.Rollback(); result = new Result <object>(-1, -1, "error_msg", null, new Exception(ex.Message)); } } return(result); }
public async Task <IActionResult> Get(string id) { var file = await ProductsHelper.GetProductConfig(id); if (string.IsNullOrEmpty(file)) { return(StatusCode(404)); } else { object jsonObject = JsonConvert.DeserializeObject(file); return(new JsonResult(jsonObject)); } }
/// Delete image in directory /// <summary> /// Delete image in directory /// </summary> /// <returns>boolean</returns> /// public bool DeleteProductImages(string account_id, string product_id) { using (var db = new DBConnection()) { // Query the database for the rows to be deleted. var DBQuery = db.ProductImages.Where(s => s.ProductID == product_id); try { foreach (var item in DBQuery) { var FilePath = @"wwwroot\\files\\" + ProductsHelper.GetProductImageLink(account_id, item.ProductID); if (File.Exists(FilePath)) { File.Delete(FilePath); } } return(true); } catch (Exception) { return(false); } } }
public IActionResult GetAll() { return(new JsonResult(ProductsHelper.GetProductConfigsList())); }
public static Result <object> AddInventory(InvoiceDetail detail, Invoice invoice, IDataRepositoryFactory _repositoryFactory) { var warehouseMovementRepo = _repositoryFactory.GetDataRepositories <WarehouseMovement>(); var productUnitsRepo = _repositoryFactory.GetDataRepositories <UnitProductEquivalence>(); var productRepo = _repositoryFactory.GetDataRepositories <Product>(); var inventoryRepo = _repositoryFactory.GetDataRepositories <Inventory>(); if (!detail.Product.IsService) { detail.Product.ProductUnits = detail.Product.ProductUnits ?? productUnitsRepo.GetAll(x => x.Where(y => y.Active == true && y.ProductId == detail.ProductId)).Data.ToList(); if (detail.WarehouseId.HasValue) { Inventory currentInventory = inventoryRepo.Get(x => x.Where(y => y.Active == true && y.ProductId == detail.ProductId && y.WarehouseId == detail.WarehouseId.Value)); if (currentInventory != null) { var convertionResult = ProductsHelper.ConvertToProductPrincipalUnit( currentInventory.Quantity, detail.Product.ProductUnits.Where(pu => pu.IsPrimary).FirstOrDefault().UnitId, detail.Product.ProductUnits ); if (convertionResult.Status < 0) { return(convertionResult); } currentInventory.Quantity = (decimal)convertionResult.Data.FirstOrDefault(); convertionResult = ProductsHelper.ConvertToProductPrincipalUnit( detail.Quantity, detail.UnitId.Value, detail.Product.ProductUnits ); if (convertionResult.Status < 0) { return(convertionResult); } detail.Quantity = (decimal)convertionResult.Data.FirstOrDefault(); var units = detail.Product.ProductUnits ?? productUnitsRepo.GetAll(x => x.Where(y => y.Active == true && y.ProductId == detail.ProductId)).Data.ToList(); currentInventory.Quantity += detail.Quantity; Product Product = productRepo.Get(detail.ProductId).Data.FirstOrDefault(); Product.Existence += detail.Quantity; productRepo.Update(Product); inventoryRepo.Update(currentInventory); WarehouseMovement movimientoAlmacen = new WarehouseMovement(currentInventory.WarehouseId, detail.ProductId, detail.Quantity, true, units.Where(u => u.IsPrimary).FirstOrDefault().UnitId, 0, "IN", invoice.InvoiceNumber ?? invoice.DocumentNumber ?? string.Empty, currentInventory.Quantity); warehouseMovementRepo.Add(movimientoAlmacen); return(new Result <object>(0, 0, "ok_msg")); } else { return(new Result <object>(-1, -1, $"outOfStock_msg | {detail.Product.Name}")); } } } return(new Result <object>(0, 0, "ok_msg")); }
public static Result <object> UpdateInventory(InvoiceDetail detail, Warehouse currentWarehouse, Invoice invoice, IDataRepositoryFactory _repositoryFactory) { var warehouseMovementRepo = _repositoryFactory.GetDataRepositories <WarehouseMovement>(); var productUnitsRepo = _repositoryFactory.GetDataRepositories <UnitProductEquivalence>(); var productRepo = _repositoryFactory.GetDataRepositories <Product>(); var inventoryRepo = _repositoryFactory.GetDataRepositories <Inventory>(); Inventory currentInventory = inventoryRepo.Get(x => x.Where(y => y.Active == true && y.ProductId == detail.ProductId && y.WarehouseId == currentWarehouse.Id)); if (currentInventory != null) { var convertionResult = ProductsHelper.ConvertToProductPrincipalUnit( detail.Quantity, detail.UnitId.Value, detail.Product.ProductUnits ); if (convertionResult.Status >= 0) { detail.Quantity = (decimal)convertionResult.Data.FirstOrDefault(); } else { return(convertionResult); } detail.UnitId = detail.Product.ProductUnits.FirstOrDefault(pu => pu.IsPrimary).UnitId; convertionResult = ProductsHelper.ConvertFromProductPrincipalUnit( currentInventory.Quantity, detail.Product.ProductUnits.Where(pu => pu.IsPrimary).FirstOrDefault().UnitId, detail.Product.ProductUnits ); if (convertionResult.Status >= 0) { currentInventory.Quantity = (decimal)convertionResult.Data.FirstOrDefault(); } else { return(convertionResult); } if (currentInventory.Quantity < detail.Quantity) { return(new Result <object>(-1, -1, $"outOfStock_msg | {detail.Product.Name},{currentWarehouse.Name}")); } else { currentInventory.Quantity -= detail.Quantity; Product product = productRepo.Get(detail.ProductId).Data?.FirstOrDefault(); product.Existence -= detail.Quantity; productRepo.Update(product); inventoryRepo.Update(currentInventory); var units = detail.Product.ProductUnits ?? productUnitsRepo.GetAll(x => x.Where(y => y.Active == true && y.ProductId == detail.ProductId)).Data; WarehouseMovement movement = new WarehouseMovement(currentWarehouse.Id, detail.ProductId, detail.Quantity * -1, true, units.Where(u => u.IsPrimary).FirstOrDefault().UnitId, 0, "OUT", invoice.InvoiceNumber ?? invoice.DocumentNumber ?? string.Empty, currentInventory.Quantity); warehouseMovementRepo.Add(movement); return(new Result <object>(0, 0, "ok_msg")); } } else { return(new Result <object>(-1, -1, $"outOfStock_msg | {detail.Product.Name},{currentWarehouse.Name}")); } }
static DatabaseFake() { Carousels = CarouselHelper.GenerateCarousel(); Products = ProductsHelper.GenerateProducts(); }
// GET: Home public ActionResult Index() { ViewBag.Categories = CommonHelper.ToDropDownList(new CategoryHandler().Get()); ViewBag.Products = ProductsHelper.ProductsToProductModels(new ProductHandler().Get()); return(View()); }
protected override Result <LeadDetail> ProcessReturnDetail(long branchOfficeId, LeadDetail detail, IDataRepositoryFactory dataRepositoryFactory, InvoiceLead invoice) { Inventory currentInventory = null; var warehouseRepo = dataRepositoryFactory.GetDataRepositories <Warehouse>(); var productRepo = dataRepositoryFactory.GetDataRepositories <Product>(); var inventoryRepo = dataRepositoryFactory.GetDataRepositories <Inventory>(); var productUnitsRepo = dataRepositoryFactory.GetDataRepositories <UnitProductEquivalence>(); var logMovementsRepo = dataRepositoryFactory.GetDataRepositories <WarehouseMovement>(); if (detail.WarehouseId.HasValue) { detail.Product.ProductUnits = detail.Product.ProductUnits == null || detail.Product.ProductUnits.Count() == 0 ? productUnitsRepo.GetAll(x => x.AsNoTracking().Where(y => y.Active == true && y.ProductId == detail.ProductId)).Data.ToList() : detail.Product.ProductUnits; if (detail.Defective) { var defectiveWarehouse = warehouseRepo.Get(x => x.AsNoTracking().Where(y => y.Active == true && y.Code == "DEF" && y.BranchOfficeId == branchOfficeId)); if (defectiveWarehouse == null) { return(new Result <LeadDetail>(-1, -1, $"defWarehouseNotExit_msg")); } currentInventory = inventoryRepo.Get(x => x.AsNoTracking().Where(y => y.Active == true && y.BranchOfficeId == branchOfficeId && y.ProductId == detail.ProductId && y.WarehouseId == defectiveWarehouse.Id)) ?? new Inventory() { WarehouseId = defectiveWarehouse.Id, ProductId = detail.ProductId, Active = true, Quantity = 0, CreatedBy = detail.CreatedBy, CreatedDate = DateTime.Now, BranchOfficeId = branchOfficeId, UnitId = detail.Product.ProductUnits.FirstOrDefault(u => u.IsPrimary).UnitId, Product = detail.Product }; } else { currentInventory = inventoryRepo.Get(x => x.AsNoTracking().Where(y => y.Active == true && y.ProductId == detail.ProductId && y.WarehouseId == detail.WarehouseId)); } if (currentInventory != null) { currentInventory.Product.ProductUnits = currentInventory.Product.ProductUnits == null || currentInventory.Product.ProductUnits.Count() == 0 ? productUnitsRepo.GetAll(x => x.AsNoTracking().Where(y => y.Active == true && y.ProductId == currentInventory.ProductId)).Data.ToList(): currentInventory.Product.ProductUnits; currentInventory.Quantity = (decimal)ProductsHelper.ConvertToProductPrincipalUnit( currentInventory.Quantity, detail.Product.ProductUnits.FirstOrDefault(pu => pu.IsPrimary).UnitId, detail.Product.ProductUnits.ToList() ).Data.FirstOrDefault(); detail.Quantity = (decimal)ProductsHelper.ConvertToProductPrincipalUnit( detail.Quantity, detail.UnitId.Value, detail.Product.ProductUnits.ToList() ).Data.FirstOrDefault(); var units = detail.Product.ProductUnits == null || detail.Product.ProductUnits.Count() == 0 ? productUnitsRepo.GetAll(x => x.AsNoTracking().Where(y => y.Active == true && y.ProductId == detail.ProductId)).Data.ToList() : detail.Product.ProductUnits; var warehouseMov = new WarehouseMovement(currentInventory.WarehouseId, detail.ProductId, detail.Quantity, true, units.Where(u => u.IsPrimary).FirstOrDefault().UnitId, branchOfficeId, "IN", invoice.InvoiceNumber ?? invoice.DocumentNumber ?? string.Empty); logMovementsRepo.Add(warehouseMov); currentInventory.Quantity += detail.Quantity; currentInventory.UnitId = currentInventory.Product.ProductUnits.FirstOrDefault(x => x.IsPrimary).UnitId; Product Product = productRepo.Get(detail.ProductId).Data.FirstOrDefault(); Product.Existence += detail.Quantity; productRepo.Update(Product); if (currentInventory.Id > 0) { inventoryRepo.Update(currentInventory); } else { inventoryRepo.Add(currentInventory); } } else { return(new Result <LeadDetail>(-1, -1, "outOfStock_msg")); } } return(new Result <LeadDetail>(0, 0, "ok_msg", new List <LeadDetail>() { detail })); }
public static Result <Invoice> UpdateDetails(Invoice invoice, IDataRepositoryFactory dataRepositoryFactory) { var detailsRepo = dataRepositoryFactory.GetCustomDataRepositories <IInvoiceDetailRepository>(); var productUnitsRepo = dataRepositoryFactory.GetCustomDataRepositories <IUnitProductEquivalenceRepository>(); var oldDetails = detailsRepo.GetByInvoiceId(invoice.Id).ToList(); var newDetails = invoice.InvoiceDetails.Where(x => x.Id == 0).ToList(); var modifiedDetails = invoice.InvoiceDetails.Except(newDetails).ToList().Except(oldDetails).ToList(); var untouchedDetails = invoice.InvoiceDetails.Intersect(oldDetails).ToList(); oldDetails.ForEach(d => { bool existe = (modifiedDetails.Exists(x => x.ProductId == d.ProductId && d.ParentId == null) || untouchedDetails.Exists(x => x.ProductId == d.ProductId && d.ParentId == null)); if (!existe) { detailsRepo.Remove(d.Id); var result = InventoryHelper.AddInventory(d, invoice, dataRepositoryFactory); if (result.Status < 0) { throw new Exception(result.Message); } } }); Invoice newinvoice = new Invoice(invoice); newinvoice.InvoiceDetails = newDetails; AddDetails(newinvoice, dataRepositoryFactory); modifiedDetails.ForEach(d => { if (!d.Product.IsService) { var oldDetail = oldDetails.Where(x => x.Id == d.Id).FirstOrDefault(); decimal currentQuantity = (decimal)ProductsHelper.ConvertToProductPrincipalUnit( d.Quantity, d.UnitId.Value, d.Product.ProductUnits == null || d.Product.ProductUnits.Count == 0 ? productUnitsRepo.GetProductUnits(d.ProductId).ToList() : d.Product.ProductUnits ).Data.FirstOrDefault(); decimal oldQuantity = (decimal)ProductsHelper.ConvertToProductPrincipalUnit( oldDetail.Quantity, oldDetail.UnitId.Value, oldDetail.Product.ProductUnits == null || oldDetail.Product.ProductUnits.Count == 0 ? productUnitsRepo.GetProductUnits(oldDetail.ProductId).ToList() : oldDetail.Product.ProductUnits ).Data.FirstOrDefault(); decimal difference = currentQuantity - oldQuantity; if (difference > 0) { var warehouse = invoice.BranchOffice.Warehouses?.Where(y => y.Id == d.WarehouseId).FirstOrDefault(); if (warehouse == null) { throw new Exception("warehouseError_msg"); } InvoiceDetail nuevoDetalle = new InvoiceDetail() { Product = d.Product, ProductId = d.ProductId, Quantity = difference, UnitId = d.UnitId ?? null, Unit = d.Unit ?? null }; var result = InventoryHelper.UpdateInventory(nuevoDetalle, warehouse, invoice, dataRepositoryFactory); if (result.Status < 0) { throw new Exception(result.Message); } } else if (difference < 0) { InvoiceDetail detailToInsert = new InvoiceDetail(d); detailToInsert.Quantity = Math.Abs(difference); detailToInsert.Unit = d.Product.ProductUnits.Where(u => u.IsPrimary).FirstOrDefault().Unit; detailToInsert.UnitId = detailToInsert.Unit.Id; var result = InventoryHelper.AddInventory(detailToInsert, invoice, dataRepositoryFactory); if (result.Status < 0) { throw new Exception(result.Message); } } detailsRepo.Update(d); } else { detailsRepo.Update(d); } }); UpdateInvoiceTaxes(invoice, dataRepositoryFactory); return(new Result <Invoice>(0, 0, "ok_msg", new List <Invoice>() { invoice })); }
public Result <object> AddInventoryList(List <SupplierReturn> entries, string reference, string details) { var result = new Result <object>(-1, -1, "error_msg"); using (var tran = _Context.Database.BeginTransaction()) { try { string sequence = sequenceRepo.CreateSequence(SequenceTypes.SupplierReturns); List <Inventory> inventories = new List <Inventory>(); entries.ForEach(e => { var currency = e.Currency ?? _Context.Currencies.Find(e.CurrencyId); _Context.Entry <Currency>(currency).State = EntityState.Detached; e.ExchangeRate = currency.ExchangeRate; e.Details = details; e.Date = DateTime.Now; e.Reference = reference; e.BeforeTaxAmount = e.ProductCost * e.Quantity; if (e.TaxAmount <= 0 && e.NoTaxes == false) { throw new Exception("taxIsReq_msg"); } e.TotalAmount = e.TaxAmount + e.BeforeTaxAmount; e.ExchangeRateAmount = e.TotalAmount * currency.ExchangeRate; e.Sequence = sequence; int inventoryIndex = inventories.FindIndex(x => x.ProductId == e.ProductId && x.WarehouseId == e.WarehouseId); e.Product = e.Product != null ? e.Product : new Product() { Id = e.ProductId }; e.Product.ProductUnits = _Context.UnitProductsEquivalences.Include(x => x.Unit).AsNoTracking().Where(x => x.Active == true && x.ProductId == e.ProductId); var convertionResult = ProductsHelper.ConvertToProductPrincipalUnit( e.Quantity, e.UnitId, e.Product.ProductUnits.ToList() ); if (inventoryIndex < 0) { inventories.Add(new Inventory() { Quantity = -1 * (convertionResult.Status >= 0 ? (decimal)convertionResult.Data.FirstOrDefault() : 0), BranchOfficeId = e.BranchOfficeId, ProductId = e.ProductId, UnitId = e.Product.ProductUnits.FirstOrDefault(x => x.IsPrimary == true).UnitId, WarehouseId = e.WarehouseId }); } else { inventories[inventoryIndex].Quantity += -1 * (convertionResult.Status >= 0 ? (decimal)convertionResult.Data.FirstOrDefault() : 0); } e.Supplier = null; e.Product = null; e.Unit = null; e.Warehouse = null; e.Currency = null; }); if (entries.Count > 0) { _Context.SuppliersReturns.AddRange(entries); _Context.SaveChanges(); } inventories.ForEach(inventory => { decimal currentQuantity = 0; var currentInventory = _Context.Inventory.AsNoTracking().FirstOrDefault(x => x.ProductId == inventory.ProductId && x.WarehouseId == inventory.WarehouseId && x.UnitId == inventory.UnitId && x.Active == true); if (currentInventory != null) { currentInventory.Quantity += inventory.Quantity; currentQuantity = currentInventory.Quantity; _Context.Inventory.Update(currentInventory); _Context.SaveChanges(); } else { throw new Exception("inventoryDoesntExist_msg"); } var movement = new WarehouseMovement() { CurrentBalance = currentQuantity, BranchOfficeId = inventory.BranchOfficeId, MovementType = Enums.MovementTypes.OUT.ToString(), ProductId = inventory.ProductId, Quantity = inventory.Quantity, Reference = sequence, UnitId = inventory.UnitId, WarehouseId = inventory.WarehouseId }; warehouseMovements.Add(movement); }); tran.Commit(); return(new Result <object>(0, 0, "ok_msg")); } catch (Exception ex) { tran.Rollback(); result = new Result <object>(-1, -1, "error_msg", null, new Exception(ex.Message)); } } return(result); }
static void Main(string[] args) { var products = ProductsHelper.GetAllProducts(); Console.WriteLine("All the products in the store are:"); products.ForEach(produt => Console.WriteLine(produt.Name)); //Search products by category // return all products from given category var allByCategory = products.Where(product => product.Category.Equals(Category.ItEquipment)).ToList(); Console.WriteLine("\n\nAll the products in category ITEQuip are:"); allByCategory.ForEach(product => Console.WriteLine(product.Name)); //Filter products by price range(from min to max) // return all products that fall in the given price range var productsByPrice = products.OrderBy(product => product.Price).ToList(); Console.WriteLine("\n\nOrdered by price:"); productsByPrice.ForEach(product => Console.WriteLine(product.Name)); //Find products by part of name // get all products that consist the part in their names var partOfNameSearch = products.Where(product => product.Name.ToLower().Contains("tra")).ToList(); Console.WriteLine("\n\nOrdered by part of name:"); partOfNameSearch.ForEach(product => Console.WriteLine(product.Name)); //Get only products ids // return only the ids of the products Console.WriteLine("\n\nList of all IDs of the products:"); products.ForEach(product => Console.WriteLine(product.generateID())); //Get product price // get the price of the product - give the id as parameter var priceProducts = products.Select(product => product.Price).ToList(); Console.WriteLine("\n\nList of all prices of the products:"); priceProducts.ForEach(product => Console.WriteLine(product)); //Get cheapest product // return the cheapest product var lowestPrice = products.Min(product => product.Price); var cheapestProduct = products.SingleOrDefault(product => product.Price.Equals(lowestPrice)); Console.WriteLine("\n\nThe cheapest product is:"); Console.WriteLine(cheapestProduct.Name); //vtor obid var lowest = products.OrderBy(product => product.Price).Take(1).ToList(); foreach (var item in lowest) { Console.WriteLine(item.Name); } //Get most expensive product // return the most expensive one var highestPrice = products.Max(product => product.Price); var priciestProduct = products.SingleOrDefault(product => product.Price.Equals(highestPrice)); Console.WriteLine("\n\nThe most expencive product is:"); Console.WriteLine(priciestProduct.Name); //Add product // create method to add product to the list of products ProductsHelper.AddProduct(products, "RAM", 3500, Category.ItEquipment); Console.WriteLine("\n\nWith added product:"); products.ForEach(product => Console.WriteLine(product.Name)); //Remove product // and a method to remove it - use id as parameter ProductsHelper.RemoveProduct(products, "RAM"); Console.WriteLine("\n\nWith removed product:"); products.ForEach(product => Console.WriteLine(product.Name)); Console.ForegroundColor = ConsoleColor.Blue; Console.WriteLine("\n\n\bThis is the end"); Console.ReadLine(); }
protected override Result <LeadDetail> ProcessDetail(long branchOfficeId, LeadDetail detail, IDataRepositoryFactory dataRepositoryFactory, InvoiceLead invoiceLead) { var inventoriesRepo = dataRepositoryFactory.GetDataRepositories <Inventory>(); var warehouseRepo = dataRepositoryFactory.GetDataRepositories <Warehouse>(); var productUnitsRepo = dataRepositoryFactory.GetDataRepositories <UnitProductEquivalence>(); LeadDetail newDetail = new LeadDetail(detail); detail.Product.ProductUnits = detail.Product.ProductUnits == null || detail.Product.ProductUnits.Count() == 0 ? productUnitsRepo.GetAll(x => x.AsNoTracking().Where(y => y.Active == true && y.ProductId == detail.ProductId)).Data.ToList() : detail.Product.ProductUnits; var convertionResult = ProductsHelper.ConvertToProductPrincipalUnit( newDetail.Quantity, newDetail.UnitId.Value, newDetail.Product.ProductUnits.ToList() ); if (convertionResult.Status < 0) { return(new Result <LeadDetail>(-1, -1, convertionResult.Message)); } decimal warehouseQuantity = (decimal)convertionResult.Data.FirstOrDefault(); decimal quantitySumm = warehouseQuantity; LeadDetail newDetailCustom = new LeadDetail(newDetail) { Quantity = warehouseQuantity }; Warehouse warehouse = null; if ((invoiceLead.WarehouseId <= 0)) { var branchOfficeWarehouses = warehouseRepo.GetAll(x => x.AsNoTracking().Where(y => y.Active == true && y.BranchOfficeId == branchOfficeId && y.Code.ToLower() != "DEF")).Data.ToList(); // ojo ojo ojo var productInventory = inventoriesRepo.Get(x => x.AsNoTracking().Where(y => y.Active == true && y.ProductId == newDetail.ProductId && y.Quantity >= warehouseQuantity && branchOfficeWarehouses.Select(r => r.Id).ToList().Contains(y.WarehouseId))); if (productInventory == null) { return(new Result <LeadDetail>(-1, -1, "outOfStock_msg")); } // ojo ojo ojo warehouse = branchOfficeWarehouses.FirstOrDefault(x => x.Id == productInventory.WarehouseId); } else { warehouse = warehouseRepo.Get(invoiceLead.WarehouseId).Data.FirstOrDefault(); } if ((invoiceLead.WarehouseId > 0) && (inventoriesRepo.Get(x => x.AsNoTracking().Where(y => y.Active == true && y.ProductId == newDetail.ProductId && y.Quantity >= warehouseQuantity && y.WarehouseId == invoiceLead.WarehouseId)) == null)) { return(new Result <LeadDetail>(-1, -1, $"outOfStock_msg | {detail.Product?.Name?? ""}")); } if (warehouse == null) { var branchOfficeWarehouses = warehouseRepo.GetAll(x => x.AsNoTracking().Where(y => y.Active == true && y.BranchOfficeId == branchOfficeId && y.Code.ToLower() != "DEF")).Data.ToList(); // ojo ojo ojo var branchOfficeInventory = inventoriesRepo.GetAll(x => x.AsNoTracking().Where(y => y.Active == true && y.ProductId == newDetail.ProductId && y.Quantity > 0 && branchOfficeWarehouses.Select(r => r.Id).ToList().Contains(y.WarehouseId))).Data.ToList(); if (branchOfficeInventory == null) { return(new Result <LeadDetail>(-1, -1, $"outOfStock_msg | {newDetail.Product.Name}")); } convertionResult = ProductsHelper.ConvertToProductPrincipalUnit( branchOfficeInventory.Sum(p => p.Quantity), branchOfficeInventory.FirstOrDefault().UnitId, newDetail.Product.ProductUnits.ToList() ); if (convertionResult.Status < 0) { return(new Result <LeadDetail>(-1, -1, convertionResult.Message)); } decimal warehousesQuantitySumm = (decimal)convertionResult.Data.FirstOrDefault(); if (warehousesQuantitySumm < warehouseQuantity) { return(new Result <LeadDetail>(-1, -1, $"outOfStock_msg | {newDetail.Product.Name}")); } foreach (Inventory warehouseProduct in branchOfficeInventory) { if (quantitySumm <= 0) { break; } decimal currentWarehouseQuantity = warehouseProduct.Quantity; if (quantitySumm < currentWarehouseQuantity) { currentWarehouseQuantity = quantitySumm; } newDetailCustom = new LeadDetail(newDetail); newDetailCustom.Quantity = (decimal)ProductsHelper.ConvertFromProductPrincipalUnit( currentWarehouseQuantity, newDetail.UnitId.Value, newDetail.Product.ProductUnits.ToList() ).Data.FirstOrDefault(); newDetailCustom.WarehouseId = warehouseProduct.WarehouseId; // newDetailCustom.UnitId = newDetailCustom.Product.ProductUnits.FirstOrDefault(x => x.IsPrimary).UnitId; InventoryHelper.UpdateInventory(newDetailCustom, warehouseRepo.Get(warehouseProduct.WarehouseId).Data.FirstOrDefault(), invoiceLead, dataRepositoryFactory); newDetail.WarehouseId = warehouseProduct.WarehouseId; quantitySumm -= currentWarehouseQuantity; } } else { newDetail.WarehouseId = warehouse.Id; newDetailCustom.Unit = newDetailCustom.Product.ProductUnits.FirstOrDefault(x => x.IsPrimary).Unit; newDetailCustom.UnitId = newDetailCustom.Unit.Id; InventoryHelper.UpdateInventory(newDetailCustom, warehouse, invoiceLead, dataRepositoryFactory); } return(new Result <LeadDetail>(0, 0, "ok_msg", new List <LeadDetail>() { newDetail })); }
public ProdcutsDemo1 GenerateProducts(Func <Product, bool> action = null) { _products = new ArrayList(); _products.AddRange(ProductsHelper.RetrieveProducts((action))); return(this); }
public IActionResult GetAll() { return(new JsonResult(ProductsHelper.GetProductConfigsList(_hostEnvironment.ContentRootPath))); }
public Result <object> AddTransfersList(List <WarehouseTransfer> entries, string reference, string details) { var result = new Result <object>(-1, -1, "error_msg"); using (var tran = _Context.Database.BeginTransaction()) { try { string sequence = sequenceRepo.CreateSequence(SequenceTypes.WarehouseTransfers); List <Inventory> inventories = new List <Inventory>(); entries.ForEach(e => { e.Details = details; e.Date = DateTime.Now; e.Reference = reference; e.Sequence = sequence; int destinyIndex = inventories.FindIndex(x => x.ProductId == e.ProductId && x.WarehouseId == e.DestinyId); int originIndex = inventories.FindIndex(x => x.ProductId == e.ProductId && x.WarehouseId == e.OriginId); e.Product = e.Product != null ? e.Product : new Product() { Id = e.ProductId }; e.Product.ProductUnits = _Context.UnitProductsEquivalences.Include(x => x.Unit).AsNoTracking().Where(x => x.Active == true && x.ProductId == e.ProductId); var convertionResult = ProductsHelper.ConvertToProductPrincipalUnit( e.Quantity, e.UnitId, e.Product.ProductUnits.ToList() ); if (destinyIndex < 0) { inventories.Add(new Inventory() { Quantity = convertionResult.Status >= 0 ? (decimal)convertionResult.Data.FirstOrDefault() : 0, BranchOfficeId = e.DestinyBranchOfficeId, ProductId = e.ProductId, UnitId = e.Product.ProductUnits.FirstOrDefault(x => x.IsPrimary == true).UnitId, WarehouseId = e.DestinyId }); } else { inventories[destinyIndex].Quantity += convertionResult.Status >= 0 ? (decimal)convertionResult.Data.FirstOrDefault() : 0; } if (originIndex < 0) { inventories.Add(new Inventory() { Quantity = convertionResult.Status >= 0 ? -1 * (decimal)convertionResult.Data.FirstOrDefault() : 0, BranchOfficeId = e.OriginBranchOfficeId, ProductId = e.ProductId, UnitId = e.Product.ProductUnits.FirstOrDefault(x => x.IsPrimary == true).UnitId, WarehouseId = e.OriginId }); } else { inventories[originIndex].Quantity += convertionResult.Status >= 0 ?-1 * (decimal)convertionResult.Data.FirstOrDefault() : 0; } e.OriginBranchOffice = null; e.Product = null; e.Unit = null; e.DestinyBranchOffice = null; e.Origin = null; e.Destiny = null; }); _Context.WarehousesTransfers.AddRange(entries); _Context.SaveChanges(); inventories.ForEach(inventory => { if (inventory.Quantity != 0) { var currentInventory = _Context.Inventory.AsNoTracking().FirstOrDefault(x => x.ProductId == inventory.ProductId && x.WarehouseId == inventory.WarehouseId && x.UnitId == inventory.UnitId && x.Active == true); if (currentInventory != null) { currentInventory.Quantity += inventory.Quantity; _Context.Inventory.Update(currentInventory); } else { _Context.Inventory.Add(inventory); } _Context.SaveChanges(); var movement = new WarehouseMovement() { CurrentBalance = currentInventory.Quantity, BranchOfficeId = inventory.BranchOfficeId, MovementType = inventory.Quantity > 0 ? Enums.MovementTypes.IN.ToString() : Enums.MovementTypes.OUT.ToString(), ProductId = inventory.ProductId, Quantity = inventory.Quantity, Reference = sequence, UnitId = inventory.UnitId, WarehouseId = inventory.WarehouseId }; warehouseMovements.Add(movement); } }); tran.Commit(); return(new Result <object>(0, 0, "ok_msg")); } catch (Exception ex) { tran.Rollback(); result = new Result <object>(-1, -1, "error_msg", null, new Exception(ex.Message)); } } return(result); }