Beispiel #1
0
 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);
     }
 }
Beispiel #2
0
 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);
         }
     }
 }
Beispiel #3
0
        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));
                }
            }
        }
Beispiel #4
0
 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);
         }
     }
 }
Beispiel #5
0
 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);
         }
     }
 }
Beispiel #6
0
 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);
         }
     }
 }
Beispiel #7
0
 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);
         }
     }
 }
Beispiel #8
0
 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);
         }
     }
 }
Beispiel #9
0
        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));
                }
            }
        }
Beispiel #10
0
 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);
         }
     }
 }