/// <summary> /// Check if quantity matches with any other converted quantity. /// False: means accept the result. (it doesn't mismatch) /// True: means do not accept the result. ( it does mismatch ) /// Use it like !(Mismatch(..,..,..) /// </summary> /// <param name="CategoryID"></param> /// <param name="PassingQuantity">Converting Quantity Type pass and it will be check against the products default quantity in the category table.</param> /// <param name="Multiply">Returns the value of multiple to be need to make the conversion.</param> /// <returns>Returns false when does not mismatch and returns true when type mismatch like ml. can't be converted into grams.</returns> public bool Mismatch(int CategoryID, byte PassingQuantity, out decimal Multiply, bool trackErrors = true) { using (var db = new JustFoodDBEntities()) { // current category qty var category = db.Categories.Find(CategoryID); if (category != null) { var currentQtyTypeFromCategory = category.QtyType; if (currentQtyTypeFromCategory == PassingQuantity) { Multiply = 1; return(false); } var quantityConverter = db.QuantityConversations.FirstOrDefault(n => n.QuantityTypeID == currentQtyTypeFromCategory && n.QuantityConversationID == PassingQuantity); if (quantityConverter != null) { Multiply = quantityConverter.Difference; return(false); } } } if (trackErrors) { Statics.ErrorCollection.Add(Const.QuantityTypeMismatch); } Multiply = 0; return(true); }
/// <summary> /// To add product to inventory : do not call this method . Instead call InventoryExtention Invetory Add to do all the work. /// Add ++ quantity to inventory of the specific product by the account balance info. /// </summary> /// <param name="accountbalance"></param> /// <param name="dbx"></param> public void AddProduct(AccountBalance accountbalance, JustFoodDBEntities dbx) { if (!accountbalance.IsBoughtProduct) { return; } if (accountbalance.AddedQuantity > 0) { Inventory inventory = dbx.Inventories.FirstOrDefault(n => n.CategoryID == accountbalance.CategoryProduct); if (inventory != null) { inventory.Quantity += (int)accountbalance.AddedQuantity; } else { // if null var invController = new InventoryController(); invController.Index(); inventory = dbx.Inventories.FirstOrDefault(n => n.CategoryID == accountbalance.CategoryProduct); if (inventory != null) { inventory.Quantity += (int)accountbalance.AddedQuantity; } } // dbx.InventoryIns.Add(invtIn); } }
public ActionResult Login(LoginModel model, string returnUrl) { if (ModelState.IsValid) { if (Membership.ValidateUser(model.UserName, model.Password)) { FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe); if (Url.IsLocalUrl(returnUrl) && User.Identity.IsAuthenticated) { //save last login var userinfo = new UserInfo(); User user = userinfo.GetUserSession(); user.LastLogIn = DateTime.UtcNow; using (var db = new JustFoodDBEntities()) { db.Entry(user).State = EntityState.Detached; db.Entry(user).State = EntityState.Modified; db.SaveChanges(); } return(Redirect(returnUrl)); } else { return(RedirectToAction("Index", "Home")); } } else { ModelState.AddModelError("", "The user name or password provided is incorrect."); } } // If we got this far, something failed, redisplay form return(View(model)); }
/// <summary> /// Call this method when adding product to inventory. /// Add product info into the InventoryIn table and then ++ then quantity in the Inventory Table By product Extension class.. /// Modify Account Balance for product bought. /// Verify account balance info. /// Add account balance to db. /// Create InventoryIn /// Create Product /// Add those to database. /// Just not save. Save it when all successful. /// </summary> /// <param name="db">Pass the dbContext</param> /// <param name="accountBalance"></param> /// <returns></returns> public bool InventoryAdd(JustFoodDBEntities db, AccountBalance accountBalance) { bool result = true; accountBalance.Dated = DateTime.Now; accountBalance.AddBy = userinfo.GetUserSession().UserID; accountBalance.IsBoughtProduct = true; accountBalance.IsAddedMoney = false; accountBalance.IsExpense = true; if (accountBalance.Amount < 0 || accountBalance.AddedQuantity < 1) { Statics.ErrorCollection.Add("Amount", "Amount or Quantity can't be negative."); result = false; } //checking if quantity type is valid. if (accountBalance.QtyType == null || db.QuantityTypes.Find(accountBalance.QtyType) == null) { Statics.ErrorCollection.Add("QtyType", "Quantity type is not valid , please select a valid quantity type."); result = false; } var quantity = accountBalance.AddedQuantity; var unitprice = (accountBalance.Amount / (double)quantity); var qtyExtension = new QuantityTypeExtension(); unitprice = Math.Round(unitprice, 2); int userid = userinfo.GetUserID(); // check if quantity mismatch. decimal multiplier = 0; var mismatch = qtyExtension.Mismatch((int)accountBalance.CategoryProduct, (byte)accountBalance.QtyType, out multiplier); if (!mismatch) { var invtIn = new InventoryIn { CategoryID = (int)accountBalance.CategoryProduct, Quantity = (decimal)quantity, UnitPrice = unitprice, AddedBy = userid, QtyType = (byte)accountBalance.QtyType, Dated = DateTime.Now }; var productExt = new ProductExtension(); //add inventory product in. db.InventoryIns.Add(invtIn); accountBalance.AddedQuantity = accountBalance.AddedQuantity * multiplier; accountBalance.Amount = accountBalance.Amount * -1; //expense db.AccountBalances.Add(accountBalance); productExt.AddProduct(accountBalance, db); } return(result); }
public AccountBalanceController() { _Db = new JustFoodDBEntities(); _Userinfo = new UserInfo(); }
public UserInfo() { _Db = new JustFoodDBEntities(); }
/// <summary> /// Return all admin emails /// </summary> /// <returns></returns> public string[] GetAdmins() { using (var db = new JustFoodDBEntities()) { return(db.Users.Where(n => n.IsAccessToAdmin).Select(n => n.Email).ToArray()); } }
public ActionResult Register(RegisterModel model) { if (ModelState.IsValid) { //check the code var db = new JustFoodDBEntities(); Code code = db.Codes.FirstOrDefault(m => m.Code1 == model.Code); if (code == null) { ModelState.AddModelError(model.Code, "Your given code is not valid."); return(View(model)); } // Attempt to register the user MembershipCreateStatus createStatus; Membership.CreateUser(model.UserName, model.Password, model.Email, passwordQuestion: null, passwordAnswer: null, isApproved: true, providerUserKey: null, status: out createStatus); if (createStatus == MembershipCreateStatus.Success) { FormsAuthentication.SetAuthCookie(model.UserName, createPersistentCookie: false); //create new user. if (code.Percentage == null) { code.Percentage = 0; } if (code.Salary == null) { code.Salary = 0; } var user = new User { LogName = model.UserName, Name = model.PersonName, IsEmployee = code.IsEmployee, IsOwner = code.IsOwner, IsAccessToAdmin = code.IsAccessToAdmin, Percentage = (double)code.Percentage, Salary = (double)code.Salary, Email = model.Email, IsValidEmail = true }; //there is no need to keep the used code. db.Entry(code).State = EntityState.Deleted; db.Users.Add(user); db.SaveChanges(); //Roles.CreateRole(""); var roleManager = new RoleManage(); string role = ""; if (user.IsAccessToAdmin) { role = RoleNames.Admin; } else if (user.IsEmployee) { role = RoleNames.SalesMan; } roleManager.AddRole(user.LogName, role); return(RedirectToAction("Index", "Home")); } else { ModelState.AddModelError("", ErrorCodeToString(createStatus)); } } // If we got this far, something failed, redisplay form return(View(model)); }