void placeOrder(string name, string quantity, string discount) { //List<int> dlist = new List<int>(); Dictionary <int, decimal> ddictionary = new Dictionary <int, decimal>(); int? MedicalStoreID = 0; bool requiredMedicineAvailable = false; string MedicalStoreName = ddlMedicalStore.SelectedItem.Text; var samename = from a in dc.Medicine_In_Stocks where a.MedicineName == name select a; foreach (Medicine_In_Stock mediamount in samename) { if (mediamount.Amount - Convert.ToDecimal(quantity) >= 0) { decimal df = Convert.ToDecimal((mediamount.Amount - Convert.ToDecimal(quantity))); ddictionary.Add(Convert.ToInt32(mediamount.MedicineID), df); requiredMedicineAvailable = true; } } if (requiredMedicineAvailable == true) // Stock Available for to be delivered { var getleastkey = (from a in ddictionary orderby a.Value select a.Key).First(); var getleastvalue = (from a in ddictionary orderby a.Value select a.Value).First(); //var getBatch = (from a in dc.Medicine_In_Stocks // where a.MedicineID==getleastkey // orderby a.ExpiryDate // select a.BatchNo).First(); // int? MedicineID = 0; // dc.GetMedicineID(name, ref MedicineID); // dc.GetMedicineIDByBatch(getBatch, ref MedicineID); dc.GetMedicalStoreID(MedicalStoreName, ref MedicalStoreID); if (chk1 == 1) { Order_By_Medical_Store obms = new Order_By_Medical_Store { MedicalStoreID = MedicalStoreID, Due_Date = Convert.ToDateTime(txtDueDate.Text), Order_Date = DateTime.Now, Placed_By = txtName.Text, Status = "Pending" }; dc.Order_By_Medical_Stores.InsertOnSubmit(obms); dc.SubmitChanges(); } var s = dc.Order_By_Medical_Stores .OrderByDescending(m => m.OrderIDByMS) .FirstOrDefault(); Order_by_Medical_Store_Per_Medicine obmsm = new Order_by_Medical_Store_Per_Medicine { MedicineID = getleastkey, Amount = Convert.ToInt32(quantity), Discount = Convert.ToInt32(discount), // DiscountAmount=(price*Convert.ToInt32 (discount))/100, //NetAmount=price-((price*Convert.ToInt32 (discount))/100), OrderIDByMS = Convert.ToDecimal(s.OrderIDByMS) }; dc.Order_by_Medical_Store_Per_Medicines.InsertOnSubmit(obmsm); dc.SubmitChanges(); var price = (from a in dc.Medicine_In_Stocks join b in dc.Order_by_Medical_Store_Per_Medicines on a.MedicineID equals b.MedicineID where b.OrderIDByMS == s.OrderIDByMS && a.MedicineID == Convert.ToInt32(getleastkey) select a.Price).Single(); var orpm = from a in dc.Order_by_Medical_Store_Per_Medicines where a.OrderIDByMS == Convert.ToDecimal(s.OrderIDByMS) && a.MedicineID == Convert.ToInt32(getleastkey) select a; foreach (Order_by_Medical_Store_Per_Medicine orp in orpm) { orp.DiscountAmount = ((price * orp.Amount) * Convert.ToInt32(discount)) / 100; orp.NetAmount = (price * orp.Amount) - (((price * orp.Amount) * Convert.ToInt32(discount)) / 100); } ; try { dc.SubmitChanges(); } catch (Exception ex) { // lblerr.Text = ex.ToString(); } var sub = dc.Medicine_In_Stocks .Where(m => m.MedicineID == getleastkey) .FirstOrDefault(); int q = Convert.ToInt32(sub.Amount); q = q - Convert.ToInt32(quantity); // int.TryParse(quantity, out q); var medi = from m in dc.Medicine_In_Stocks where m.MedicineID == getleastkey select m; foreach (Medicine_In_Stock mis in medi) { if (q < 20) { Notification nf = new Notification { UserID = Convert.ToInt32(Session["SaleUserID"]), Message = "New Order You have less of: " + mis.MedicineName + "having Batch# " + mis.BatchNo, Type = "Warning", Status = "Unseen", OrderNumber = s.OrderIDByMS }; dc.Notifications.InsertOnSubmit(nf); dc.SubmitChanges(); } else { Notification nf = new Notification { UserID = Convert.ToInt32(Session["SaleUserID"]), Message = "You have new Order", Type = "Order Placed", Status = "Unseen", OrderNumber = s.OrderIDByMS }; dc.Notifications.InsertOnSubmit(nf); dc.SubmitChanges(); } mis.Amount = q; try { dc.SubmitChanges(); } catch (Exception ex) { // lblerr.Visible = false; //lblerr.Text = ex.ToString(); } } ; } else { int?MedicineID = 0; dc.GetMedicineID(name, ref MedicineID); var medi = from m in dc.Medicine_In_Stocks where m.MedicineID == MedicineID select m; dc.GetMedicalStoreID(MedicalStoreName, ref MedicalStoreID); if (chk1 == 1) { Order_By_Medical_Store obms = new Order_By_Medical_Store { MedicalStoreID = MedicalStoreID, Due_Date = Convert.ToDateTime(txtDueDate.Text), Order_Date = DateTime.Now, Placed_By = txtName.Text, Status = "Pending" }; dc.Order_By_Medical_Stores.InsertOnSubmit(obms); dc.SubmitChanges(); } var s = dc.Order_By_Medical_Stores .OrderByDescending(m => m.OrderIDByMS) .FirstOrDefault(); Order_by_Medical_Store_Per_Medicine obmsm = new Order_by_Medical_Store_Per_Medicine { MedicineID = MedicineID, Amount = Convert.ToInt32(quantity), Discount = Convert.ToInt32(discount), // DiscountAmount=(price*Convert.ToInt32 (discount))/100, //NetAmount=price-((price*Convert.ToInt32 (discount))/100), OrderIDByMS = Convert.ToDecimal(s.OrderIDByMS) }; dc.Order_by_Medical_Store_Per_Medicines.InsertOnSubmit(obmsm); dc.SubmitChanges(); var price = (from a in dc.Medicine_In_Stocks join b in dc.Order_by_Medical_Store_Per_Medicines on a.MedicineID equals b.MedicineID where b.OrderIDByMS == s.OrderIDByMS && a.MedicineID == Convert.ToInt32(MedicineID) select a.Price).Single(); var orpm = from a in dc.Order_by_Medical_Store_Per_Medicines where a.OrderIDByMS == Convert.ToDecimal(s.OrderIDByMS) && a.MedicineID == Convert.ToInt32(MedicineID) select a; foreach (Order_by_Medical_Store_Per_Medicine orp in orpm) { orp.DiscountAmount = ((price * orp.Amount) * Convert.ToInt32(discount)) / 100; orp.NetAmount = (price * orp.Amount) - (((price * orp.Amount) * Convert.ToInt32(discount)) / 100); } ; try { dc.SubmitChanges(); } catch (Exception ex) { // lblerr.Text = ex.ToString(); } foreach (Medicine_In_Stock mis in medi) { // mis.Amount = 0; Notification nf = new Notification { UserID = Convert.ToInt32(Session["SaleUserID"]), Message = "Medicine finished " + mis.MedicineName, Type = "Stock Ended", Status = "Unseen", OrderNumber = s.OrderIDByMS }; dc.Notifications.InsertOnSubmit(nf); dc.SubmitChanges(); try { dc.SubmitChanges(); } catch (Exception ex) { // lblerr.Visible = false; //lblerr.Text = ex.ToString(); } } ; } }