public static User SignIn(string uid, string pwd) //авторизация { using (CashboxDataContext db = new CashboxDataContext()) { User user = null; try { db.DBConnectionCheck(); user = db.Users.FirstOrDefault(u => uid == u.UId && pwd == u.Password); if (user != null) { if (SigningIn != null) { SigningIn(user, new SignInEventArgs(true)); return(user); } } else { if (SigningIn != null) { SigningIn(user, new SignInEventArgs(false)); return(user); } } } catch (Exception e) { MessageBox.Show(e.Message); } return(user); } }
public bool EndShift() //завершение смены { using (CashboxDataContext db = new CashboxDataContext()) { try { db.DBConnectionCheck(); db.Shifts.Attach(this); EndDateTime = DateTime.Now; db.SaveChanges(); CurrentCash = 0; CashReceived = 0; CashAdded = 0; CashWithdrawn = 0; CashReturned = 0; IsActive = false; return(true); } catch (Exception e) { MessageBox.Show(e.Message); return(false); } } }
public static async void WithdrawMoneyAsync(decimal money, Shift shift) //изъ¤тие средств { using (CashboxDataContext db = new CashboxDataContext()) { try { db.DBConnectionCheck(); db.Shifts.Attach(shift); if (shift.CurrentCash >= money) { shift.CurrentCash -= money; shift.CashWithdrawn += money; await db.SaveChangesAsync(); TransactionCompleted?.Invoke(shift, new ShiftTransactionEventArgs("—редства успешно изъ¤ты!", true)); } else { TransactionCompleted?.Invoke(shift, new ShiftTransactionEventArgs("Ќевозможно изъ¤ть введенную сумму, так как в кассе находитс¤ меньше средств, чем требуетс¤", false)); } } catch (Exception e) { TransactionCompleted?.Invoke(shift, new ShiftTransactionEventArgs(e.Message + "\n—редства изъ¤ты не были!", false)); } } }
public bool NumberCheck() //проверка оставшегося количества { using (CashboxDataContext db = new CashboxDataContext()) { long _checkedNum; try { db.DBConnectionCheck(); _checkedNum = db.Items.First(i => i.IId == this.IId).Number; if (_checkedNum < this.Number) { MessageBox.Show($"На складе не хватает {this.Number - _checkedNum} единиц товара \"{this.Name}\"!"); return(false); } else { return(true); } } catch (Exception ex) { MessageBox.Show(ex.Message); return(false); } } }
public static Item GetItem(object sender, string iId) //поиск товара в БД { using (CashboxDataContext db = new CashboxDataContext()) { Item item = null; try { db.DBConnectionCheck(); item = db.Items.FirstOrDefault(i => i.IId == iId); if (item != null && item.Number >= 1) { item.Number = 1; ItemSearching?.Invoke(sender, new ItemSearchEventArgs($"Товар с идентификатором {iId} добавлен в чек!", true)); return(item); } else { ItemSearching?.Invoke(sender, new ItemSearchEventArgs($"Товар с идентификатором {iId} отсутствует на складе, либо не зарегистрирован в базе данных !", false)); return(null); } } catch (Exception e) { ItemSearching?.Invoke(sender, new ItemSearchEventArgs($"Не удалось найти товар в базе данных!\n{e.Message}", false)); return(null); } } }
public override async void ReturnItemAsync(Shift currShift) //асинхронный возврат { using (CashboxDataContext db = new CashboxDataContext()) { try { db.DBConnectionCheck(); Return _return = db.Returns.FirstOrDefault(r => r.SId == currShift.SId && r.IId == this.IId); Item item = db.Items.First(i => i.IId == this.IId); if (_return == null) { db.Returns.Add(new Return(currShift, this)); } else { _return.Number += this.Number; } item.Number += this.Number; db.Shifts.Attach(currShift); currShift.CashReturned += this.Price * this.Number; currShift.CurrentCash -= this.Price * this.Number; await db.SaveChangesAsync(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } }
public override async void SellItemAsync(Shift currShift) //асинхронная продажа { using (CashboxDataContext db = new CashboxDataContext()) { try { db.DBConnectionCheck(); Sale sale = db.Sales.FirstOrDefault(s => s.SId == currShift.SId && s.IId == this.IId); Item item = db.Items.First(i => i.IId == this.IId); if (sale == null) { db.Sales.Add(new Sale(currShift, this)); } else { sale.Number += this.Number; } item.Number -= this.Number; db.Shifts.Attach(currShift); currShift.CashReceived += this.Price * this.Number; currShift.CurrentCash += this.Price * this.Number; await db.SaveChangesAsync(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } }
public override async void ReturnItemAsync(Shift currShift) //асинхронный возврат товара { using (CashboxDataContext db = new CashboxDataContext()) { try { db.DBConnectionCheck(); db.Shifts.Attach(currShift); FreeItem fItem = db.FreeItems.First(f => f.SId == currShift.SId); fItem.CashSum -= this.Price * this.Number; currShift.CashReturned += this.Price * this.Number; currShift.CurrentCash -= this.Price * this.Number; await db.SaveChangesAsync(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } }
public static async void AddMoneyAsync(decimal money, Shift shift) //внесение средств { using (CashboxDataContext db = new CashboxDataContext()) { try { db.DBConnectionCheck(); db.Shifts.Attach(shift); shift.CashAdded += money; shift.CurrentCash += money; await db.SaveChangesAsync(); TransactionCompleted?.Invoke(shift, new ShiftTransactionEventArgs("—редства успешно добавлены!", true)); } catch (Exception e) { TransactionCompleted?.Invoke(shift, new ShiftTransactionEventArgs(e.Message + "\n—редства добавлены не были!", false)); } } }
public static Shift ShiftStart(IUser <User> user) //старт смены { using (CashboxDataContext db = new CashboxDataContext()) { try { db.DBConnectionCheck(); Shift prevShift = db.Shifts.OrderByDescending(sh => sh.SId).FirstOrDefault(); decimal currCash = 0; currCash = prevShift != null ? prevShift.CurrentCash : 0; Shift currShift = new Shift(user, currCash); db.Shifts.Add(currShift); db.SaveChanges(); return(currShift); } catch (Exception e) { MessageBox.Show(e.Message); return(null); } } }