private async void BtnFinishOrder_Click_1(object sender, EventArgs e)
        {
            string customerName = txtCustomerName.Text.Trim();
            string cusLastName  = txtCusLastName.Text.Trim();

            textBox1.Text = _loggedUser.Id.ToString();


            PendingsOrder order = _context.PendingsOrders.Add(new PendingsOrder
            {
                UserId       = _loggedUser.Id,
                Date         = DateTime.Now,
                CustomerName = customerName,
                CusLastName  = cusLastName
            });

            await _context.SaveChangesAsync();

            foreach (var item in _orderDetails)
            {
                _context.OrderDetails.Add(new Model.OrderDetail
                {
                    ProductId = item.Product.Id,

                    PendingOrderId = order.Id
                });
            }

            await _context.SaveChangesAsync();

            ShowMessage("Success", "New order is added to the list Pending Orders", false);
            ShowMessage("Success", $"Customer Id {_loggedUser.Id.ToString()}", false);
        }
        private async void BtnAddEmployee_Click_1(object sender, EventArgs e)
        {
            string fname        = txtFirstname.Text.Trim();
            string lname        = txtLastname.Text.Trim();
            string username     = txtUsername.Text.Trim();
            string pass         = txtPassword.Text.Trim();
            Role   selectedRole = cmbPositions.SelectedItem as Role;

            if (fname == string.Empty || lname == string.Empty ||
                username == string.Empty || pass == string.Empty)
            {
                ShowMessage("Error", "Please, fill all the fields");
                return;
            }

            if (_context.Users.Any(u => u.Username.ToLower() == username.ToLower()))
            {
                ShowMessage("Error", "Duplicate username");
                return;
            }

            _context.Users.Add(new User
            {
                Firstname           = fname,
                Lastname            = lname,
                Username            = username,
                Password            = GetHash(pass),
                RoleId              = selectedRole.Id,
                HasVerifiedPassword = false
            });
            await _context.SaveChangesAsync();

            ShowMessage("Success", "New employee successfully added", false);
            UpdateDataGridEmployees();
        }
        private async void BtnUpdatePassword_Click_1(object sender, EventArgs e)
        {
            //read all values
            string currentPassword = txtCurrentPassword.Text.Trim();
            string newPassword     = txtNewPassword.Text.Trim();
            string confirmPassword = txtConfirmPassword.Text.Trim();

            if (currentPassword == string.Empty || newPassword == string.Empty || confirmPassword == string.Empty)
            {
                ShowMessage("Error", "Fill all the password fields");
                return;
            }

            if (!CheckHash(_loggedUser.Password, currentPassword))
            {
                ShowMessage("Error", "Current password is invalid.");
                return;
            }

            if (newPassword != confirmPassword)
            {
                ShowMessage("Error", "New password and confirm password don't match.");
                return;
            }

            //find User from database to update his/her password
            User updateUser = await _context.Users.FindAsync(_loggedUser.Id);

            updateUser.Password            = GetHash(newPassword);
            updateUser.HasVerifiedPassword = true;
            await _context.SaveChangesAsync();

            //open Cashier or Barista form
            if (updateUser.Role.Name == Utilities.Roles.Cashier.ToString())
            {
                this.Close();
                new CashierForm(updateUser).Show();
            }
        }