public ActionResult Login(string userName, string password) { if (string.IsNullOrEmpty(userName)) { ModelState.AddModelError("UserName", "Missing user name"); return(Index()); } if (string.IsNullOrEmpty(password)) { ModelState.AddModelError("Password", "Missing password"); return(Index()); } var user = new User(); var service = new UserService(); var result = service.Check(userName, password, out user); if (GetModelError(result)) { return(Index()); } var userViewResult = EntityHelper.CopyEntity(user, new UserViewResult()); userViewResult.Password = string.Empty; var cookie = UserAuthentication.CreateCookie(userViewResult); HttpContext.Response.Cookies.Remove(cookie.Name); HttpContext.Response.Cookies.Add(cookie); return(RedirectToAction("Index", "Home")); }
public DBResult EditAll(List <User> entities) { if (entities == null) { return(DBResult.WrongParameter); } using (var db = new SystemEntities()) { foreach (var entity in entities) { if (EntityHelper.HasNullProperty(entity, new string[] { "Password" })) { return(DBResult.WrongParameter); } var user = db.User.FirstOrDefault(u => u.ID == entity.ID); if (user == null) { return(DBResult.NotFound); } var existResult = CheckExists(db.User, new string[] { "ShortID", "UserName" }, entity, true); if (existResult != DBResult.Succeed) { return(existResult); } EntityHelper.CopyEntity(entity, user, new string[] { "Password" }); } db.SaveChanges(); return(DBResult.Succeed); } }
public ActionResult EditPage(int tableID) { var service = new VBillService(); var vBills = service.QueryServing(tableID); if (vBills == null || vBills.Count() == 0) { GetModelError(DBResult.NotFound); return(EditTablePage()); } var billViewResult = EntityHelper.CopyEntity(vBills.First(), new BillViewResult()); billViewResult.ID = vBills.First().BillID; billViewResult.Details = EntityHelper.CopyEntities(vBills, new List <BillDetailsViewResult>()); for (int i = 1; i < billViewResult.Details.Count(); i++) { billViewResult.Details[i].ID = vBills[i].DetailsID; } ViewBag.TimePeriod = ConverterDictionary.TimePeriodDictionary.FirstOrDefault(p => p.Key == billViewResult.TimePeriod).Value; return(View("EditPage", billViewResult)); }
protected ActionResult Edit(S viewResult, int id, string[] succeedPage, Func <int, ActionResult> errorPage) { if (!ModelState.IsValid) { return(errorPage(id)); } var viewResultID = viewResult.GetType().GetProperty("ID"); viewResultID.SetValue(viewResult, id); var service = ServiceHelper.GetDataService <T>(); var result = service.Edit(EntityHelper.CopyEntity(viewResult, new T())); if (result == DBResult.Succeed) { return(RedirectToAction(succeedPage[0], succeedPage[1])); } else { var error = DBDictionary.DBResultDictionary.FirstOrDefault(e => e.Key == result).Value; ModelState.AddModelError(error[0], error[1]); } return(errorPage(id)); }
protected T SetViewResult <T, S>(T viewResult, string pOID = null) where T : IOrder <S>, new() where S : IOrderDetails, new() { if (!string.IsNullOrEmpty(pOID)) { var service = new VInventoryListService(); int totalCount = 0; var queryResult = service.Query(new VInventoryListQueryConditions { POID = pOID }, out totalCount); if (totalCount != 0) { viewResult = EntityHelper.CopyEntity(queryResult.First(), viewResult); viewResult.Details = EntityHelper.CopyEntities(queryResult, new List <S>()); } } var orderForeID = BuilderDictionary.ForeIDDictionary.FirstOrDefault(i => i.Key == typeof(T)).Value; var nowDate = DateTime.Now; viewResult.ID = orderForeID + nowDate.ToString("yyyyMMddHHmmss"); viewResult.Date = nowDate; //EntityHelper.SetEntityID(viewResult, orderForeID + nowDate.ToString("yyyyMMddHHmmss")); //EntityHelper.SetPropertyValue(viewResult, "Date", nowDate); return(viewResult); }
public DBResult EditAll(List <InventoryList> entities) { if (entities == null) { return(DBResult.WrongParameter); } using (var db = new WarehouseEntities()) { foreach (var entity in entities) { if (EntityHelper.HasNullProperty(entity)) { return(DBResult.WrongParameter); } var inventoryList = db.InventoryList.FirstOrDefault(l => l.POID == entity.POID); if (inventoryList == null) { return(DBResult.NotFound); } EntityHelper.CopyEntity(entity, inventoryList); } db.SaveChanges(); return(DBResult.Succeed); } }
private DBResult EditStartOfTerm(StartOfTerm entity) { if (entity == null) { return(DBResult.WrongParameter); } string foreID = BuilderDictionary.ForeIDDictionary.FirstOrDefault(p => p.Key == typeof(StartOfTermViewResult)).Value; entity.ID = foreID + entity.Date.ToString("yyyyMMddHHmmss"); using (var db = new ReportEntities()) { var startOfTerm = db.StartOfTerm.FirstOrDefault(t => t.ID == entity.ID); if (startOfTerm == null) { db.StartOfTerm.Add(entity); } EntityHelper.CopyEntity(entity, startOfTerm); db.SaveChanges(); return(DBResult.Succeed); } }
private DBResult Add(List <MonthlyReportViewResult> viewResults) { if (viewResults == null) { return(DBResult.WrongParameter); } using (var db = new ReportEntities()) { foreach (var viewResult in viewResults) { var monthlyReport = EntityHelper.CopyEntity(viewResult, new MonthlyReport()); db.MonthlyReport.Add(monthlyReport); if (viewResult.Details.Count == 0) { continue; } foreach (var detailsViewResult in viewResult.Details) { var mReportDetails = EntityHelper.CopyEntity(detailsViewResult, new MReportDetails()); db.MReportDetails.Add(mReportDetails); } } db.SaveChanges(); return(DBResult.Succeed); } }
public ActionResult DiscountPage(int tableID) { var service = new VBillService(); var vBills = service.QueryServing(tableID); if (vBills == null || vBills.Count() == 0) { GetModelError(DBResult.NotFound); return(EditTablePage()); } var billViewResult = EntityHelper.CopyEntity(vBills.First(), new BillViewResult()); billViewResult.ID = vBills.First().BillID; billViewResult.Details = EntityHelper.CopyEntities(vBills, new List <BillDetailsViewResult>()); for (int i = 1; i < billViewResult.Details.Count(); i++) { billViewResult.Details[i].ID = vBills[i].DetailsID; } ViewBag.Discounts = GetSelectList <Discount>(new DiscountQueryConditions { OrderBy = "ID", IgnoredProperties = new string[] { "IsMemberOnly" } }, "Description", "Description"); ViewBag.TimePeriod = ConverterDictionary.TimePeriodDictionary.FirstOrDefault(p => p.Key == billViewResult.TimePeriod).Value; return(View("DiscountPage", billViewResult)); }
public ActionResult Index() { var userViewResult = new UserViewResult { UserName = HttpContext.User.Identity.Name }; EntityHelper.CopyEntity((UserIdentity)HttpContext.User.Identity, userViewResult); ViewBag.Role = ConverterDictionary.UserRoleDictionary.FirstOrDefault(p => p.Key == userViewResult.Role).Value; return(View("Index", userViewResult)); }
private DBResult Edit(List <MonthlyReportViewResult> viewResults) { if (viewResults == null) { return(DBResult.WrongParameter); } using (var db = new ReportEntities()) { foreach (var viewResult in viewResults) { var monthlyReport = db.MonthlyReport.FirstOrDefault(r => r.ID == viewResult.ID); if (monthlyReport == null) { db.MonthlyReport.Add(EntityHelper.CopyEntity(viewResult, new MonthlyReport())); } EntityHelper.CopyEntity(viewResult, monthlyReport); if (viewResult.Details.Count == 0) { continue; } foreach (var detailsViewResult in viewResult.Details) { var mReportDetails = db.MReportDetails.FirstOrDefault(d => d.ID == detailsViewResult.ID); if (mReportDetails == null) { db.MReportDetails.Add(mReportDetails); } EntityHelper.CopyEntity(detailsViewResult, mReportDetails); } } db.SaveChanges(); return(DBResult.Succeed); } }
public ActionResult Edit(MemberViewResult viewResult, string id) { if (!ModelState.IsValid) { return(EditPage(id)); } var service = new MemberService(); var result = service.Edit(EntityHelper.CopyEntity(viewResult, new Member())); if (result == DBResult.Succeed) { return(RedirectToAction("Index", "Member")); } else { var error = DBDictionary.DBResultDictionary.FirstOrDefault(e => e.Key == result).Value; ModelState.AddModelError(error[0], error[1]); } return(EditPage(id)); }
protected ActionResult Edit(S viewResult, int id, Func <ActionResult> succeedPage, Func <int, ActionResult> errorPage) { if (!ModelState.IsValid) { return(errorPage(id)); } var service = ServiceHelper.GetDataService <T>(); var result = service.Edit(EntityHelper.CopyEntity(viewResult, new T())); if (result == DBResult.Succeed) { return(succeedPage()); } else { var error = DBDictionary.DBResultDictionary.FirstOrDefault(e => e.Key == result).Value; ModelState.AddModelError(error[0], error[1]); } return(errorPage(id)); }
public DBResult Pay(BillViewResult billViewResult) { using (var db = new FrontDeskEntities()) { var bill = db.Bill.FirstOrDefault(b => b.ID == billViewResult.ID); if (bill == null) { return(DBResult.NotFound); } EntityHelper.CopyEntity(billViewResult, bill); var servingTable = db.ServingTable.FirstOrDefault(t => t.ID == billViewResult.TableID); if (servingTable == null) { return(DBResult.NotFound); } db.ServingTable.Remove(servingTable); db.SaveChanges(); return(DBResult.Succeed); } }
private List <MonthlyReportViewResult> CalculateMonthlyReport(DateTime dateStart, DateTime?dateEnd = null) { int reportCount = 1; int productCount = 1; if (dateEnd == null) { dateEnd = dateStart.Month == 12 ? new DateTime(dateStart.Year + 1, 1, 1) : new DateTime(dateStart.Year, dateStart.Month + 1, 1); } string reportForeID = BuilderDictionary.ForeIDDictionary.FirstOrDefault(p => p.Key == typeof(MonthlyReportViewResult)).Value; string detailsForeID = BuilderDictionary.ForeIDDictionary.FirstOrDefault(p => p.Key == typeof(MReportDetailsViewResult)).Value; var reports = new List <MonthlyReportViewResult>(); using (var reportEntities = new ReportEntities()) { using (var warehouseEntities = new WarehouseEntities()) { using (var frontDeskEntities = new FrontDeskEntities()) { var startOfTerms = reportEntities.StartOfTerm.Where(s => s.Date == dateStart); var vPurchaseOrders = reportEntities.VPurchaseOrder.Where(o => o.Date >= dateStart && o.Date < dateEnd); var vCreditOrders = reportEntities.VCreditOrder.Where(o => o.Date >= dateStart && o.Date < dateEnd); var vMaterialsRequisitions = reportEntities.VMaterialsRequisition.Where(o => o.Date >= dateStart && o.Date < dateEnd); var vMaterialsReturnOrders = reportEntities.VMaterialsReturnOrder.Where(o => o.Date >= dateStart && o.Date < dateEnd); var vStockingLists = reportEntities.VStockingList.Where(o => o.Date >= dateStart && o.Date < dateEnd); var vBills = frontDeskEntities.VBill.Where(o => o.Date >= dateStart && o.Date < dateEnd); var warehouses = warehouseEntities.Warehouse.ToList(); var products = warehouseEntities.Product.ToList(); foreach (var warehouse in warehouses) { var viewResult = new MonthlyReportViewResult { ID = reportForeID + dateStart.ToString("yyyyMMddHHmmss") + reportCount, WarehouseName = warehouse.Name, Date = dateStart, Details = new List <MReportDetailsViewResult>() }; reportCount++; foreach (var product in products) { var productStart = startOfTerms.FirstOrDefault(s => s.ProductName == product.Name && s.WarehouseName == warehouse.Name); var productPurchaseOrders = vPurchaseOrders.Where(o => o.ProductName == product.Name && o.WarehouseName == warehouse.Name); if (productStart == null && productPurchaseOrders.Count() == 0) { continue; } var productEnd = warehouseEntities.VInventoryList.Where(l => l.ProductName == product.Name && l.WarehouseName == warehouse.Name); double productEndAmount = productEnd.Count() == 0 ? 0 : productEnd.Sum(l => l.Amount); var detailsViewResult = new MReportDetailsViewResult { ID = detailsForeID + dateStart.ToString("yyyyMMddHHmmss") + productCount, OrderID = viewResult.ID, ProductName = product.Name, PurchasePrice = 0, PurchaseAmount = 0, PurchaseTotalPrice = 0, CreditPrice = 0, CreditAmount = 0, CreditTotalPrice = 0, MRequisitionPrice = 0, MRequisitionAmount = 0, MRequisitionTotalPrice = 0, MReturnPrice = 0, MReturnAmount = 0, MReturnTotalPrice = 0, SListPrice = 0, SListAmount = 0, SListTotalPrice = 0, StartOfTerm = EntityHelper.CopyEntity(productStart, new StartOfTermViewResult()) }; productCount++; var productCreditOrders = vCreditOrders .Where(o => o.ProductName == product.Name && o.WarehouseName == warehouse.Name).ToList(); var productMaterialsRequisitions = vMaterialsRequisitions .Where(o => o.ProductName == product.Name && o.WarehouseName == warehouse.Name).ToList(); var productMaterialsReturnOrders = vMaterialsReturnOrders .Where(o => o.ProductName == product.Name && o.WarehouseName == warehouse.Name).ToList(); var productStockingLists = vStockingLists .Where(o => o.ProductName == product.Name && o.WarehouseName == warehouse.Name).ToList(); if (productPurchaseOrders != null) { double?totalPrice = productPurchaseOrders.Sum(o => o.TotalPrice); double amount = productPurchaseOrders.Sum(o => o.Amount); if (totalPrice != null && amount != 0) { detailsViewResult.PurchaseTotalPrice = (decimal)totalPrice.Value; detailsViewResult.PurchaseAmount = amount; detailsViewResult.PurchasePrice = (decimal)(totalPrice.Value / amount); } } if (productMaterialsRequisitions != null) { double?totalPrice = productMaterialsRequisitions.Sum(o => o.TotalPrice); double amount = productMaterialsRequisitions.Sum(o => o.Amount); if (totalPrice != null && amount != 0) { detailsViewResult.MRequisitionTotalPrice = (decimal)totalPrice.Value; detailsViewResult.MRequisitionAmount = amount; detailsViewResult.MRequisitionPrice = (decimal)(totalPrice.Value / amount); } } if (productMaterialsReturnOrders != null) { double?totalPrice = productMaterialsReturnOrders.Sum(o => o.TotalPrice); double amount = productMaterialsReturnOrders.Sum(o => o.Amount); if (totalPrice != null && amount != 0) { detailsViewResult.MReturnTotalPrice = (decimal)totalPrice.Value; detailsViewResult.MReturnAmount = amount; detailsViewResult.MReturnPrice = (decimal)(totalPrice.Value / amount); } } if (productCreditOrders != null) { double?totalPrice = productCreditOrders.Sum(o => o.TotalPrice); double amount = productCreditOrders.Sum(o => o.Amount); if (totalPrice != null && amount != 0) { detailsViewResult.CreditTotalPrice = (decimal)totalPrice.Value; detailsViewResult.CreditAmount = amount; detailsViewResult.CreditPrice = (decimal)(totalPrice.Value / amount); } } if (productCreditOrders != null) { double?totalPrice = productCreditOrders.Sum(o => o.TotalPrice); double amount = productCreditOrders.Sum(o => o.Amount); if (totalPrice != null && amount != 0) { detailsViewResult.CreditTotalPrice = (decimal)totalPrice.Value; detailsViewResult.CreditAmount = amount; detailsViewResult.CreditPrice = (decimal)(totalPrice.Value / amount); } } if (productStockingLists != null) { double?totalPrice = productStockingLists.Sum(o => o.TotalPrice); double amount = productStockingLists.Sum(o => o.Amount); if (totalPrice != null && amount != 0) { detailsViewResult.SListTotalPrice = (decimal)totalPrice.Value; detailsViewResult.SListAmount = amount; detailsViewResult.SListPrice = (decimal)(totalPrice.Value / amount); } } var dish = frontDeskEntities.Dish.FirstOrDefault(d => d.Name == product.Name && d.InventoryControl == true); if (dish != null && dish.UnitConversion != null) { double unitConversion = dish.UnitConversion.Value; var dishBills = vBills.Where(b => b.DishName == dish.Name); foreach (var dishBill in dishBills) { var dishDetails = frontDeskEntities.BillDetails.FirstOrDefault(d => d.ID == dishBill.DetailsID); if (dishDetails == null) { continue; } decimal productPrice = warehouseEntities.PODetails.FirstOrDefault(d => d.ID == dishDetails.POID).Price; double productAmount = dishBill.Amount * unitConversion; detailsViewResult.BillTotalPrice += productPrice * (decimal)productAmount; detailsViewResult.BillAmount += productAmount; } if (detailsViewResult.BillAmount != 0) { detailsViewResult.BillPrice = detailsViewResult.BillTotalPrice / (decimal)detailsViewResult.BillAmount; } } viewResult.Details.Add(detailsViewResult); } reports.Add(viewResult); } } } } return(reports); }
public DBResult Add(TransferOrderViewResult orderViewResult) { int detailsCount = 1; foreach (var detailsViewResult in orderViewResult.Details) { var detailsForeID = BuilderDictionary.ForeIDDictionary.FirstOrDefault(i => i.Key == typeof(TransferOrderViewResult)).Value; var nowDate = DateTime.Now; detailsViewResult.ID = detailsForeID + nowDate.ToString("yyyyMMddHHmmss") + detailsCount; detailsViewResult.OrderID = orderViewResult.ID; detailsCount++; } var order = EntityHelper.CopyEntity(orderViewResult, new TransferOrder()); if (EntityHelper.HasNullProperty(order, new string[] { "Remark" })) { return(DBResult.WrongParameter); } using (var db = new WarehouseEntities()) { var orderExistResult = CheckExists(db.TransferOrder, new string[] { "ID" }, order); if (orderExistResult != DBResult.Succeed) { return(orderExistResult); } db.TransferOrder.Add(order); var outWarehouse = db.Warehouse.FirstOrDefault(w => w.Name == order.OutName); var inWarehouse = db.Warehouse.FirstOrDefault(w => w.Name == order.InName); if (outWarehouse == null || inWarehouse == null) { return(DBResult.NotFound); } foreach (var detailsViewResult in orderViewResult.Details) { var details = EntityHelper.CopyEntity(detailsViewResult, new TODetails()); if (EntityHelper.HasNullProperty(details)) { return(DBResult.WrongParameter); } var detailsExistResult = CheckExists(db.TODetails, new string[] { "ID" }, details); if (detailsExistResult != DBResult.Succeed) { return(detailsExistResult); } db.TODetails.Add(details); var product = db.Product.FirstOrDefault(p => p.Name == details.ProductName); if (product == null) { return(DBResult.NotFound); } var outInventoryList = db.InventoryList.FirstOrDefault(l => l.POID == details.POID && l.WarehouseID == outWarehouse.ID); if (outInventoryList == null) { return(DBResult.NotFound); } outInventoryList.Amount -= details.Amount; var inInventoryList = db.InventoryList.FirstOrDefault(l => l.POID == details.POID && l.WarehouseID == inWarehouse.ID); if (inInventoryList == null) { db.InventoryList.Add(new InventoryList { ProductID = product.ID, POID = details.POID, WarehouseID = inWarehouse.ID, Amount = details.Amount }); } else { inInventoryList.Amount += details.Amount; } } db.SaveChanges(); return(DBResult.Succeed); } }
public DBResult Add <T, S, R, U>(T orderViewResult, string[] orderIgnoreNullCheck, string[] orderCheckExists, string[] detailsIgnoreNullCheck, string[] detailsCheckExists) where T : IOrder <S> where S : IOrderDetails where R : class, new() where U : class, new() { int detailsCount = 1; var detailsForeID = BuilderDictionary.ForeIDDictionary.FirstOrDefault(i => i.Key == typeof(S)).Value; var nowDate = DateTime.Now; string warehouseName = orderViewResult.WarehouseName; foreach (var detailsViewResult in orderViewResult.Details) { detailsViewResult.ID = detailsForeID + nowDate.ToString("yyyyMMddHHmmss") + detailsCount; detailsViewResult.OrderID = orderViewResult.ID; detailsCount++; } var order = EntityHelper.CopyEntity(orderViewResult, new R()); if (EntityHelper.HasNullProperty(order, orderIgnoreNullCheck)) { return(DBResult.WrongParameter); } using (var db = new WarehouseEntities()) { var orderSet = db.Set <R>(); var detailsSet = db.Set <U>(); var orderExistResult = CheckExists(orderSet, orderCheckExists, order); if (orderExistResult != DBResult.Succeed) { return(orderExistResult); } orderSet.Add(order); var warehouse = db.Warehouse.FirstOrDefault(w => w.Name == warehouseName); if (warehouse == null) { return(DBResult.NotFound); } foreach (var detailsViewResult in orderViewResult.Details) { string productName = detailsViewResult.ProductName; double amount = detailsViewResult.Amount; var details = EntityHelper.CopyEntity(detailsViewResult, new U()); if (EntityHelper.HasNullProperty(details, detailsIgnoreNullCheck)) { return(DBResult.WrongParameter); } var detailsExistResult = CheckExists(detailsSet, detailsCheckExists, details); if (detailsExistResult != DBResult.Succeed) { return(detailsExistResult); } detailsSet.Add(details); var product = db.Product.FirstOrDefault(p => p.Name == productName); if (product == null) { return(DBResult.NotFound); } if (order.GetType() == typeof(PurchaseOrder)) { var newlist = new InventoryList { ProductID = product.ID, WarehouseID = warehouse.ID, Amount = amount, POID = detailsViewResult.ID }; db.InventoryList.Add(newlist); } else { var pOID = EntityHelper.GetPropertyValue(details, "POID").ToString(); var inventoryList = db.InventoryList.FirstOrDefault(l => l.POID == pOID && l.WarehouseID == warehouse.ID); if (inventoryList == null) { return(DBResult.NotFound); } var type = order.GetType(); if (type == typeof(MaterialsReturnOrder)) { inventoryList.Amount += amount; } if (type == typeof(CreditOrder) || type == typeof(MaterialsRequisition)) { inventoryList.Amount -= amount; } if (type == typeof(StocktakingList)) { inventoryList.Amount = amount; } } } db.SaveChanges(); return(DBResult.Succeed); } }
public DBResult Add(BillViewResult billViewResult) { int detailsCount = 1; var detailsForeID = BuilderDictionary.ForeIDDictionary.FirstOrDefault(i => i.Key == typeof(BillDetailsViewResult)).Value; var nowDate = DateTime.Now; using (var frontDeskEntities = new FrontDeskEntities()) { using (var warehouseEntities = new WarehouseEntities()) { foreach (var detailsViewResult in billViewResult.Details) { detailsViewResult.ID = detailsForeID + nowDate.ToString("yyyyMMddHHmmss") + detailsCount; detailsViewResult.OrderID = billViewResult.ID; detailsCount++; var details = EntityHelper.CopyEntity(detailsViewResult, new BillDetails()); if (EntityHelper.HasNullProperty(details, new string[] { "WarehouseID", "POID" })) { return(DBResult.WrongParameter); } var detailsExistResult = CheckExists(frontDeskEntities.BillDetails, new string[] { "ID" }, details); if (detailsExistResult != DBResult.Succeed) { return(detailsExistResult); } var dish = frontDeskEntities.Dish.FirstOrDefault(d => d.Name == details.DishName); if (dish == null) { return(DBResult.NotFound); } var amount = decimal.Parse(detailsViewResult.Amount.ToString()); billViewResult.TotalCost += dish.Price * amount; if (dish.InventoryControl) { var product = warehouseEntities.Product.FirstOrDefault(p => p.Name == dish.Name); if (product == null) { return(DBResult.NotFound); } var inventoryList = warehouseEntities.InventoryList .Where(l => l.ProductID == product.ID).OrderBy(l => l.POID).OrderBy(l => l.WarehouseID).FirstOrDefault(l => l.Amount >= 0); if (inventoryList == null) { return(DBResult.InventoryEmpty); } var unitConversion = dish.UnitConversion; if (unitConversion == null) { return(DBResult.NotFound); } var consumedAmount = details.Amount * unitConversion.Value; if (inventoryList.Amount - consumedAmount < 0) { return(DBResult.InventoryEmpty); } inventoryList.Amount -= consumedAmount; details.WarehouseID = inventoryList.WarehouseID; details.POID = inventoryList.POID; } frontDeskEntities.BillDetails.Add(details); } billViewResult.ExactCost = billViewResult.TotalCost; var bill = EntityHelper.CopyEntity(billViewResult, new Bill()); if (EntityHelper.HasNullProperty(bill, new string[] { "TotalCost", "Discount", "DiscountType", "ExactCost", "Remark", "MemberID", "ReceivedMoney", "Change" })) { return(DBResult.WrongParameter); } var billExistResult = CheckExists(frontDeskEntities.Bill, new string[] { "ID" }, bill); if (billExistResult != DBResult.Succeed) { return(billExistResult); } frontDeskEntities.Bill.Add(bill); if (frontDeskEntities.ServingTable.Any(t => t.ID == bill.TableID)) { return(DBResult.TableExisted); } frontDeskEntities.ServingTable.Add(new ServingTable { ID = bill.TableID, BillID = bill.ID }); frontDeskEntities.SaveChanges(); warehouseEntities.SaveChanges(); return(DBResult.Succeed); } } }
public DBResult Discount(BillViewResult billViewResult, out BillViewResult newBillViewResult) { newBillViewResult = new BillViewResult(); using (var frontDeskEntities = new FrontDeskEntities()) { using (var warehouseEntities = new WarehouseEntities()) { if (string.IsNullOrEmpty(billViewResult.DiscountType)) { billViewResult.ExactCost = billViewResult.TotalCost; } else { var discount = frontDeskEntities.Discount.FirstOrDefault(d => d.Description == billViewResult.DiscountType); if (discount == null) { return(DBResult.WrongParameter); } billViewResult.Discount = discount.DiscountPercent; if (!string.IsNullOrEmpty(discount.IgnoredCategories)) { billViewResult.ExactCost = 0; var ignoredCategories = discount.IgnoredCategories.Split(','); var detailsViewResults = frontDeskEntities.BillDetails.Where(d => d.OrderID == billViewResult.ID); foreach (var detailsViewResult in detailsViewResults) { var dish = frontDeskEntities.Dish.FirstOrDefault(d => d.Name == detailsViewResult.DishName); if (dish == null) { return(DBResult.NotFound); } var category = warehouseEntities.Category.FirstOrDefault(c => c.ID == dish.CategoryID); if (category == null) { return(DBResult.WrongParameter); } var amount = decimal.Parse(detailsViewResult.Amount.ToString()); if (ignoredCategories.Contains(category.Name)) { billViewResult.ExactCost += dish.Price * amount; } else { billViewResult.ExactCost += (dish.Price * amount) * discount.DiscountPercent / 100; } } } else { billViewResult.ExactCost = billViewResult.TotalCost * discount.DiscountPercent / 100; } } var bill = frontDeskEntities.Bill.FirstOrDefault(b => b.ID == billViewResult.ID); if (bill == null) { return(DBResult.NotFound); } EntityHelper.CopyEntity(billViewResult, bill); frontDeskEntities.SaveChanges(); } } newBillViewResult = billViewResult; return(DBResult.Succeed); }
public List <MonthlyReportViewResult> Get(DateTime date) { int totalCount = 0; int startOfTermsCount; DateTime monthStart = new DateTime(date.Year, date.Month, 1); var startOfTerms = Query <StartOfTerm>(new StartOfTermQueryConditions { Date = monthStart }, out startOfTermsCount); var results = Query <MonthlyReport>(new MonthlyReportQueryConditions { Date = monthStart }, out totalCount); if (results != null && totalCount != 0) { var viewResults = EntityHelper.CopyEntities(results, new List <MonthlyReportViewResult>()); foreach (var viewResult in viewResults) { int detailsCount = 0; viewResult.Details = new List <MReportDetailsViewResult>(); var details = Query <MReportDetails>(new MReportDetailsQueryConditions { OrderID = viewResult.ID }, out detailsCount); if (details != null && detailsCount != 0) { viewResult.Details.AddRange(EntityHelper.CopyEntities(details, new List <MReportDetailsViewResult>())); foreach (var detailsViewResult in viewResult.Details) { detailsViewResult.StartOfTerm = new StartOfTermViewResult(); var startOfTerm = startOfTerms .FirstOrDefault(s => s.ProductName == detailsViewResult.ProductName && s.WarehouseName == viewResult.WarehouseName); if (startOfTerms != null) { detailsViewResult.StartOfTerm = EntityHelper.CopyEntity(startOfTerm, new StartOfTermViewResult()); } } } } return(viewResults); } if (startOfTermsCount == 0) { int lastReportsCount = 0; DateTime lastMonthStart = date.Month == 1 ? new DateTime(date.Year - 1, 12, 1) : new DateTime(date.Year, date.Month - 1, 1); var lastReports = Query <MonthlyReport>(new MonthlyReportQueryConditions { Date = lastMonthStart }, out lastReportsCount); if (lastReportsCount != 0) { foreach (var lastReport in lastReports) { int detailsCount = 0; var details = Query <MReportDetails>(new MReportDetailsQueryConditions { OrderID = lastReport.ID }, out detailsCount); if (detailsCount != 0) { foreach (var detail in details) { var newStartOfTerm = new StartOfTerm { Date = lastReport.Date, WarehouseName = lastReport.WarehouseName, ProductName = detail.ProductName, Price = detail.SListPrice, Amount = detail.SListAmount, TotalPrice = detail.SListTotalPrice }; var termDBResult = AddStartOfTerm(newStartOfTerm); if (termDBResult != DBResult.Succeed) { return(new List <MonthlyReportViewResult>()); } } } } } } var calViewResults = CalculateMonthlyReport(monthStart); var dBResult = Add(calViewResults); if (dBResult != DBResult.Succeed) { return(new List <MonthlyReportViewResult>()); } return(calViewResults); }