public IHttpActionResult PutDEAL(int id, DEAL dEAL) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (id != dEAL.DEAL_ID) { return(BadRequest()); } db.Entry(dEAL).State = EntityState.Modified; try { db.SaveChanges(); } catch (DbUpdateConcurrencyException) { if (!DEALExists(id)) { return(NotFound()); } else { throw; } } return(StatusCode(HttpStatusCode.NoContent)); }
public IHttpActionResult GetDEAL(int id) { DEAL dEAL = db.DEALs.Find(id); if (dEAL == null) { return(NotFound()); } return(Ok(dEAL)); }
public IHttpActionResult PostDEAL(DEAL dEAL) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } db.DEALs.Add(dEAL); db.SaveChanges(); return(CreatedAtRoute("DefaultApi", new { id = dEAL.DEAL_ID }, dEAL)); }
public IHttpActionResult DeleteDEAL(int id) { DEAL dEAL = db.DEALs.Find(id); if (dEAL == null) { return(NotFound()); } db.DEALs.Remove(dEAL); db.SaveChanges(); return(Ok(dEAL)); }
public TransactionViewModel() { LoadTransactionData(); //Khởi tạo AddCommand AddCommand = new RelayCommand <object>((p) => { //Kiểm tra sự tồn tại trong database var displayList = DataProvider.Ins.DB.DEALs.Where(x => x.CustomerName == CustomerName && x.IsDeleted == false); if (displayList == null || SalePercent < 0 || Quantity <= 0) { return(false); } return(true); }, (p) => { //Add deal vào db var deal = new DEAL() { CustomerName = CustomerName, PhoneNumber = PhoneNumber, CustomerAddress = CustomerAddress, PayDate = PayDate, ProductID = getIDProduct(ProductName), Quantity = (int)Quantity, IsDeleted = false }; if (deal.ProductID == -1) //Ktra sản phẩn có tồn tại trong db không { MessageBox.Show("Không tồn tại sản phẩm " + ProductName + " trong kho", "Lỗi"); return; } //Tính thành tiền if (IsSale == true) { deal.SalePercent = SalePercent / 100; deal.SaleEvent = SaleEvent; deal.DisplayPrice = CalcDisplayPrice(DataProvider.Ins.DB.PRODUCTs.Find(deal.ProductID).RetailPrice, Convert.ToDouble(deal.SalePercent)) * deal.Quantity; } else { deal.DisplayPrice = DataProvider.Ins.DB.PRODUCTs.Find(deal.ProductID).RetailPrice *deal.Quantity; } DataProvider.Ins.DB.DEALs.Add(deal); //Update lại số lượng trong product var product = DataProvider.Ins.DB.PRODUCTs.Find(deal.ProductID); if (deal.Quantity > product.Quantity) //Kiểm tra đầu vào { MessageBox.Show("Số lượng sản phẩm vượt quá số lượng tồn kho", "Lỗi"); return; } product.Quantity -= (int)Quantity; //Update lại số lượng trong category var category = DataProvider.Ins.DB.CATEGORies.Find(deal.PRODUCT.CatID); category.Quantity -= (int)Quantity; DataProvider.Ins.DB.SaveChanges(); //Add vào TransactionDataList để update lại danh sách hiển thị lên màn hình TransactionData transactionData = new TransactionData(); transactionData.NumercialOrder = TransactionDataList.Count() + 1; transactionData.IsSale = IsSale; transactionData.ProductName = deal.PRODUCT.DisplayName; transactionData.Deal = deal; TransactionDataList.Add(transactionData); }); //Khởi tạo UpdateCommand UpdateCommand = new RelayCommand <object>((p) => { //Kiểm tra đầu vào if (SalePercent < 0 || Quantity <= 0) { return(false); } return(true); }, (p) => { var displayList = DataProvider.Ins.DB.PRODUCTs.Where(x => x.DisplayName == ProductName && x.IsDeleted == false); if (displayList == null || displayList.Count() == 0) { MessageBox.Show("Không tồn tại sản phẩm " + ProductName + " trong kho", "Lỗi"); return; } //Cập nhật lại deal var deal = DataProvider.Ins.DB.DEALs.Find(SelectedItem.Deal.ID); //Cập nhật lại số lượng trong category //Nếu vẫn giữ nguyên loại sản phẩm đó var product = DataProvider.Ins.DB.PRODUCTs.Find(getIDProduct(ProductName)); if (deal.PRODUCT.CatID == product.CatID) { var category = DataProvider.Ins.DB.CATEGORies.Find(product.CatID); category.Quantity = category.Quantity + deal.Quantity - (int)Quantity; if (category.Quantity < 0) { MessageBox.Show("Số lượng giao dịch lớn hơn số lượng tồn kho", "Lỗi"); return; } } else // Nếu đổi sang loại khác thì { //Tăng số lượng ở loại cũ var oldCategory = DataProvider.Ins.DB.CATEGORies.Find(deal.PRODUCT.CatID); oldCategory.Quantity += deal.Quantity; //Giảm số lượng ở loại mới //deal.PRODUCT.CatID = product.CatID; var newCategory = DataProvider.Ins.DB.CATEGORies.Find(product.CatID); newCategory.Quantity -= (int)Quantity; if (newCategory.Quantity < 0) { MessageBox.Show("Số lượng giao dịch lớn hơn số lượng tồn kho", "Lỗi"); return; } } deal.CustomerName = CustomerName; deal.PhoneNumber = PhoneNumber; deal.CustomerAddress = CustomerAddress; deal.PayDate = PayDate; if (IsSale == true) { deal.SalePercent = SalePercent; deal.SaleEvent = SaleEvent; } else { deal.SalePercent = null; deal.SaleEvent = null; } //Cập nhật lại số lượng product //Nếu vẫn giữ nguyên tên sản phẩm đó if (deal.PRODUCT.DisplayName == product.DisplayName) { //Cập nhật số lượng sản phẩm đó product.Quantity = product.Quantity + deal.Quantity - (int)Quantity; } else //Nếu đổi sang sản phẩm khác { //Tăng số lượng sản phẩm cũ var oldProduct = DataProvider.Ins.DB.PRODUCTs.Find(deal.ProductID); oldProduct.Quantity += deal.Quantity; //Giảm số lượng sản phẩm mới product.Quantity -= (int)Quantity; deal.ProductID = product.ID; } if (product.Quantity < 0) { MessageBox.Show("Số lượng giao dịch lớn hơn số lượng tồn kho", "Lỗi"); return; } //Cập nhật số lượng trong deal deal.Quantity = (int)Quantity; //Cập nhật thành tiền if (IsSale == true) { deal.SalePercent = SalePercent / 100; deal.SaleEvent = SaleEvent; deal.DisplayPrice = CalcDisplayPrice(product.RetailPrice, Convert.ToDouble(deal.SalePercent)) * deal.Quantity; } else { deal.DisplayPrice = product.RetailPrice * deal.Quantity; } DataProvider.Ins.DB.SaveChanges(); //Cập nhật lại TransactionDataList var transactionData = TransactionDataList.ToList().Find(x => x.Deal.ID == deal.ID); transactionData.ProductName = deal.PRODUCT.DisplayName; transactionData.IsSale = IsSale; transactionData.Deal = deal; }); //Khởi tạo WatchCommand WatchCommand = new RelayCommand <object>((p) => { if (string.IsNullOrEmpty(CustomerName)) { return(false); } return(true); }, (p) => { var deal = DataProvider.Ins.DB.DEALs.Find(SelectedItem.Deal.ID); string retailPrice = getMoney(deal.PRODUCT.RetailPrice) + " VNĐ"; string displayPrice = getMoney(deal.DisplayPrice) + "VNĐ"; MessageBox.Show("Tên khách hàng: " + deal.CustomerName + "\n" + "ID: " + deal.ID + "\n" + "Số điện thoại: " + deal.PhoneNumber + "\n" + "Địa chỉ: " + deal.CustomerAddress + "\n" + "Ngày thanh toán: " + Convert.ToDateTime(deal.PayDate).Date.ToShortDateString() + "\n" + "Tên sản phẩm: " + deal.PRODUCT.DisplayName + "\n" + "Loại sản phẩm: " + deal.PRODUCT.CATEGORY.DisplayName + "\n" + "Giá gốc: " + retailPrice + "\n" + "Số lượng: " + deal.Quantity + "\n" + "Giảm: " + Convert.ToDouble(deal.SalePercent) * 100 + " %" + "\n" + "Nhân dịp: " + deal.SaleEvent + "\n" + "Thành tiền: " + displayPrice, "Thông tin chi tiết"); }); //Khởi tạo DeleteCommand DeleteCommand = new RelayCommand <object>((p) => { if (string.IsNullOrEmpty(CustomerName)) { return(false); } return(true); }, (p) => { var deal = DataProvider.Ins.DB.DEALs.Find(SelectedItem.Deal.ID); var product = DataProvider.Ins.DB.PRODUCTs.Find(deal.ProductID); var category = DataProvider.Ins.DB.CATEGORies.Find(deal.PRODUCT.CatID); //Đánh dấu là đã bị xóa trong db deal.IsDeleted = true; //Tăng số lượng trong category category.Quantity += deal.Quantity; //Tăng số lượng trong product product.Quantity += deal.Quantity; //Xóa trong TransactionDataList int index = TransactionDataList.ToList().FindIndex(x => x.Deal.ID == SelectedItem.Deal.ID); for (int i = index + 1; i < TransactionDataList.Count; i++) { TransactionDataList[i].NumercialOrder -= 1; //Giảm số thứ tự } TransactionDataList.RemoveAt(index); DataProvider.Ins.DB.SaveChanges(); } ); }
public bool Create(DealCreateApiModel apiModel, int createdUser) { var newDeal = new DEAL(); if (apiModel.account != 0) { newDeal.ACCOUNT_ID = apiModel.account; } newDeal.Amount = apiModel.amount; //newDeal.ClosingDate = apiModel.closingDate.GetValueOrDefault(); if (apiModel.contact != 0) { newDeal.Contact_ID = apiModel.contact; } newDeal.DealOwner = apiModel.owner != 0 ? apiModel.owner : createdUser; newDeal.Description = apiModel.description; newDeal.ExpectedRevenue = apiModel.expectedRevenue; if (apiModel.expectedClosingDate != null) { newDeal.ExpectedClosingDate = DbDateHelper.ToNullIfTooEarlyForDb(apiModel.expectedClosingDate.Value); } if (apiModel.stage != 0) { var newStageHistory = new STAGE_HISTORY(); newStageHistory.ModifiedBy = createdUser; newStageHistory.ModifiedAt = DateTime.Now; newStageHistory.STAGE_ID = apiModel.stage; var dbStage = db.STAGEs.Find(apiModel.stage); newDeal.ExpectedRevenue = (long)((apiModel.amount * dbStage.Probability) / 100); if (apiModel.closingDate != null) { newDeal.ClosingDate = DbDateHelper.ToNullIfTooEarlyForDb(apiModel.closingDate.Value); } if (apiModel.stage == (int)EnumStage.LOST) { newDeal.isLost = true; newDeal.ClosingDate = newStageHistory.ModifiedAt; } else { newDeal.isLost = false; } if (apiModel.stage == (int)EnumStage.WON) { newDeal.ClosingDate = newStageHistory.ModifiedAt; } newDeal.STAGE_HISTORY.Add(newStageHistory); if (!String.IsNullOrEmpty(apiModel.lostReason)) { //find lost reason var lostReason = db.LOST_REASON.Where(c => c.Reason.ToLower().Contains(apiModel.lostReason.ToLower())).FirstOrDefault(); if (lostReason == null) { var newLostReason = new LOST_REASON(); newLostReason.Reason = apiModel.lostReason; db.LOST_REASON.Add(newLostReason); newDeal.LOST_REASON = newLostReason; //newLostReason.DEALs.Add(newDeal); } else { newDeal.LOST_REASON_ID = lostReason.ID; //lostReason.DEALs.Add(newDeal); } //dbDeal.LOST_REASON_ID = apiModel.lostReason; } } newDeal.Name = apiModel.name; if (apiModel.priority != 0) { newDeal.PRIORITY_ID = apiModel.priority; } newDeal.CreatedAt = DateTime.Now; newDeal.CreatedBy = createdUser; newDeal.ModifiedAt = DateTime.Now; if (apiModel.campaign != 0) { newDeal.CAMPAIGN_ID = apiModel.campaign; } if (apiModel.contact != 0) { newDeal.Contact_ID = apiModel.contact; } try { db.DEALs.Add(newDeal); db.SaveChanges(); var owner = db.USERs.Find(newDeal.DealOwner); var creator = db.USERs.Find(createdUser); var notifyModel = new NotificationApiModel(); notifyModel.title = "Deal created"; notifyModel.content = $"Deal {newDeal.Name} has been created and assigned to you by {creator?.Username}."; notifyModel.createdAt = DateTime.Now; notifyModel.module = "deals"; notifyModel.moduleObjectId = newDeal.ID; //notifyModel. NotificationManager.SendNotification(notifyModel, new List <USER> { owner }); NotificationManager.ReloadDashboardSale(); return(true); } catch { return(false); } }