private static async Task <int?> SaveBillingItem(ZubairEntities dbContext, dynamic bt) { int?billingItemId = bt.id; if (billingItemId != null) { var billingItem = await dbContext.billingitems.Where(c => c.id == billingItemId).FirstOrDefaultAsync(); // update billing item if (billingItem != null) { billingItem.cost = bt.cost; billingItem.name = bt.name; await dbContext.SaveChangesAsync(); } } else { // create billing item var tempBillingItem = new billingitem { cost = bt.cost, name = bt.name }; dbContext.billingitems.Add(tempBillingItem); await dbContext.SaveChangesAsync(); dbContext.Entry(tempBillingItem).GetDatabaseValues(); billingItemId = tempBillingItem.id; } return(billingItemId); }
private static async Task <Guid> SaveInvoiceItem(ZubairEntities dbContext, int invoiceID, dynamic it, int billingItemId, Guid invoiceItemId, invoiceitem invoiceItem) { // update invoice items if (invoiceItem != null) { invoiceItem.invoice_id = invoiceID; invoiceItem.billing_item_id = billingItemId; invoiceItem.discount = it.Discount; invoiceItem.totalcost = it.TotalCost; invoiceItem.taxes = it.Taxes; invoiceItemId = invoiceItem.id; await dbContext.SaveChangesAsync(); } else { // create invoice items var tempInvoiceItem = new invoiceitem { id = Guid.NewGuid(), invoice_id = invoiceID, billing_item_id = billingItemId, discount = it.Discount, totalcost = it.TotalCost }; dbContext.invoiceitems.Add(tempInvoiceItem); await dbContext.SaveChangesAsync(); dbContext.Entry(tempInvoiceItem).GetDatabaseValues(); invoiceItemId = tempInvoiceItem.id; } return(invoiceItemId); }
public async Task <(bool IsSuccess, string ErrorMessage)> CreateInvoice(HttpFileCollection files) { bool IsSuccessSaving = false; try { for (int i = 0; i < files.Count; i++) { HttpPostedFile httpPostedFile = files[i]; if (httpPostedFile == null) { return(false, "Not Found"); } if (httpPostedFile.FileName.ToLower().Contains("data.json")) { if (httpPostedFile.ContentLength > 0) { dynamic array = JsonConvert.DeserializeObject((new StreamReader(httpPostedFile.InputStream)).ReadToEnd()); using (ZubairEntities dbContext = new ZubairEntities()) { using (DbContextTransaction transaction = dbContext.Database.BeginTransaction()) { try { foreach (var item in array) { if (item != null) { // invoice var tempInvoice = new invoice { contractor_id = item.ContractorId, customer_id = item.CustomerID, creationdate = DateTime.Now, invoice_status_id = item.InvoiceStatusId, isactive = item.IsActive }; dbContext.invoices.Add(tempInvoice); await dbContext.SaveChangesAsync(); dbContext.Entry(tempInvoice).GetDatabaseValues(); int invoiceID = tempInvoice.id; await SaveInvoiceSubData(dbContext, item, invoiceID, tempInvoice); #region "Commented" //foreach (var it in item.InvoiceItem) //{ // foreach (var bt in it.BillingItem) // { // // create billing item // var tempBillingItem = new billingitem // { // cost = bt.cost, // name = bt.name // }; // dbContext.billingitems.Add(tempBillingItem); // await dbContext.SaveChangesAsync(); // dbContext.Entry(tempBillingItem).GetDatabaseValues(); // int billingItemId = tempBillingItem.id; // // create invoice items // var tempInvoiceItem = new invoiceitem // { // invoice_id = invoiceID, // billing_item_id = billingItemId, // discount = it.Discount, // totalcost = it.TotalCost // }; // dbContext.invoiceitems.Add(tempInvoiceItem); // await dbContext.SaveChangesAsync(); // dbContext.Entry(tempInvoiceItem).GetDatabaseValues(); // int invoiceItemId = tempInvoiceItem.id; // foreach (var invFile in it.InvoiceFile) // { // // create file // var tempInvoiceFile = new invoicefile // { // invoiceitem_id = invoiceItemId, // name = invFile.name // }; // tempInvoiceFile.filelocation = GetFilePath(tempInvoiceFile.name); // dbContext.invoicefiles.Add(tempInvoiceFile); // } // await dbContext.SaveChangesAsync(); // } //} //InsertInvoiceLog(dbContext, invoiceID, tempInvoice.invoice_status_id); //await dbContext.SaveChangesAsync(); #endregion } } IsSuccessSaving = true; transaction.Commit(); } catch (Exception ex) { transaction.Rollback(); throw ex; } } } // end using } } } if (IsSuccessSaving) { for (int i = 0; i < files.Count; i++) { HttpPostedFile httpPostedFile = files[i]; if (!httpPostedFile.FileName.ToLower().Contains("data.json")) { this.UploadFile(httpPostedFile); } } return(true, null); } return(false, "Not Found"); } catch (Exception ex) { //logger?.LogError(ex.ToString()); return(false, ex.Message); } }