public async Task <Purchase> Create(Purchase data) { using (var transaction = _db.Database.BeginTransaction()) { try { var purchaseObj = await Task.Run(() => { Purchase purchase = _db.Purchases.Create(); purchase.UserId = data.UserId; purchase.SupplierId = data.SupplierId; purchase.Supplier = _db.Suppliers.Find(data.SupplierId); _db.Purchases.Add(purchase); _db.SaveChanges(); _db.ProductDetails.AddRange(data.ProductDetails.Select(e => { e.PurchaseId = purchase.Id; return(e); })); _db.SaveChanges(); transaction.Commit(); return(purchase); }); return(purchaseObj); } catch (Exception e) { transaction.Rollback(); throw new Exception(e.Message); } } }
public async Task <Sale> Create(Sale data) { using (var transaction = _db.Database.BeginTransaction()) { try { var saleObj = await Task.Run(() => { IEnumerable <ProductDetail> productDetails = _db.ProductDetails.Include(e => e.ReceivedProducts); IEnumerable <SaleDetail> saleDetails = _db.SaleDetails; List <SaleDetail> saleDetailList = new List <SaleDetail>(); Sale sale = _db.Sales.Create(); sale.UserId = data.UserId; _db.Sales.Add(sale); _db.SaveChanges(); data.SaleDetails.ToList().ForEach((saleDetail) => { var saleDetailItem = saleDetails.Where(e => e.ProductDetailId == saleDetail.ProductDetailId); ProductDetail productDetail = productDetails.Where(e => e.Id == saleDetail.ProductDetailId).FirstOrDefault(); if (productDetail.ReceivedProducts.Count() != 0) { int countProductAlreadyOut = 0; if (saleDetailItem.Count() != 0) { countProductAlreadyOut = saleDetailItem.Sum(e => e.Quantity); } if (productDetail.ReceivedProducts.Sum(e => e.Quantity) >= saleDetail.Quantity + countProductAlreadyOut) { saleDetail.SaleId = sale.Id; saleDetailList.Add(saleDetail); } } }); if (saleDetailList.Count() == 0) { transaction.Rollback(); throw new Exception("Sale item is empty"); } _db.SaleDetails.AddRange(saleDetailList); _db.SaveChanges(); transaction.Commit(); return(sale); }); return(saleObj); } catch (Exception e) { transaction.Rollback(); throw new Exception(e.Message); } } }
public Task <Role> Create(Role data) { return(Task.Run(() => { Role role = _db.Roles.Create(); role.Name = data.Name; _db.Roles.Add(role); _db.SaveChanges(); return role; })); }
public Task <Category> Create(Category data) { return(Task.Run(() => { Category category = _db.Categories.Create(); category.Name = data.Name; _db.Categories.Add(category); _db.SaveChanges(); return category; })); }
public Task <Supplier> Create(Supplier data) { return(Task.Run(() => { Supplier supplier = _db.Suppliers.Create(); supplier.Name = data.Name; supplier.Address = data.Address; supplier.Phone = data.Phone; supplier.Description = data.Description; _db.Suppliers.Add(supplier); _db.SaveChanges(); return supplier; })); }
public Task <Product> Create(Product data) { return(Task.Run(() => { Product product = _db.Products.Create(); product.Name = data.Name; product.Description = data.Description; product.CodeProduct = data.CodeProduct; product.ProductCategories = new List <ProductCategory>(); product.ProductDetails = new List <ProductDetail>(); product.Prices = new List <Price>(); _db.Products.Add(product); _db.SaveChanges(); return product; })); }
//plan tambah siapa penerima barang nya dan bikin sp public async Task <ReceivedProduct> Create(ReceivedProduct data) { using (var transaction = _db.Database.BeginTransaction()) { try { int totalQuantityProductDetail = _db.ProductDetails.Find(data.ProductDetailID).Quantity; int totalReceivedProduct = 0; var objReceivedProduct = _db.ReceivedProducts.Where(e => e.ProductDetailID == data.ProductDetailID); if (objReceivedProduct.Count() != 0) { totalReceivedProduct = objReceivedProduct.Sum(e => e.Quantity); } if (totalQuantityProductDetail < totalReceivedProduct + data.Quantity) { transaction.Rollback(); throw new Exception("product is received more than request"); } var receivedProductObj = await Task.Run(() => { ReceivedProduct receivedProduct = _db.ReceivedProducts.Create(); receivedProduct.ProductDetailID = data.ProductDetailID; receivedProduct.UserId = data.UserId; receivedProduct.Quantity = data.Quantity; _db.ReceivedProducts.Add(receivedProduct); _db.SaveChanges(); transaction.Commit(); return(receivedProduct); }); return(receivedProductObj); } catch (Exception e) { transaction.Rollback(); throw new Exception(e.Message); } } }
public Task <Price> Create(Price price) { return(Task.Run(() => { Price newPrice = _db.Prices.Create(); newPrice.ProductId = price.ProductId; newPrice.Value = price.Value; newPrice.Type = price.Type; _db.Prices.Add(newPrice); _db.SaveChanges(); return newPrice; })); }
public Task <User> Create(User data) { return(Task.Run(() => { User user = _db.Users.Create(); user.Email = data.Email; user.Password = data.Password; user.Name = data.Name; user.Phone = data.Phone; user.Gender = data.Gender; user.UserRoles = new List <UserRole>(); _db.Users.Add(user); _db.SaveChanges(); return user; })); }
public IEnumerable <ProductCategory> Create(IEnumerable <ProductCategory> productCategories) { _db.ProductCategories.AddRange(productCategories); _db.SaveChanges(); return(productCategories); }