using System; using System.Text.RegularExpressions; using System.Windows.Forms; using Tanshu.Accounts.Contracts; using Tanshu.Accounts.Entities; using Tanshu.Accounts.Entities.Auth; using Tanshu.Accounts.Helpers; using Tanshu.Accounts.Management; using Tanshu.Accounts.PointOfSale.Sales; using Tanshu.Accounts.Repository; using Tanshu.Common; using Tanshu.Common.KeyboardControl; using NHibernate.Tool.hbm2ddl; namespace Tanshu.Accounts.PointOfSale { public enum LoginType { Keyboard, Msr } public partial class MainForm : Form { public MainForm() { //using (var frm = new SplashForm()) // frm.ShowDialog(); SessionManager.Initialize(); //new SchemaExport(SessionManager.Configuration).Create(false, true); InitializeComponent(); } private User form_userEvent(object sender, UserEventArgs e) { var user = e.User; if (user == null) using (var form = new UserForm(null)) form.ShowDialog(); else using (var form = new UserForm(user.UserID)) form.ShowDialog(); e.Handled = true; return new User(); } private void btnLogin_Click(object sender, EventArgs e) { LoginUser(LoginType.Keyboard); } private void btnSale_Click(object sender, EventArgs e) { if (Session.IsAllowed(RoleConstants.SALES)) using (var frmSale = new SalesForm(new BillController(null, true))) frmSale.ShowDialog(); } private void btnProduct_Click(object sender, EventArgs e) { if (Session.IsAllowed(RoleConstants.PRODUCTS)) using (var frm = new ProductListForm()) frm.ShowDialog(); } private void btnProductGroup_Click(object sender, EventArgs e) { if (Session.IsAllowed(RoleConstants.PRODUCTS)) using (var frm = new ProductGroupListForm()) frm.ShowDialog(); } private void btnCustomer_Click(object sender, EventArgs e) { using (var frm = new CustomersForm(null, "")) frm.ShowDialog(); } private void btnExit_Click(object sender, EventArgs e) { Close(); } private void btnCreateUser_Click(object sender, EventArgs e) { if (Session.IsAllowed(RoleConstants.SECURITY_MANAGE_ROLES)) using (var bi = new UserBI()) { using (var form = new SelectUser(bi.GetFilteredUsers, true)) { form.UserEvent += form_userEvent; form.ShowDialog(); } } } private void btnUserRoles_Click(object sender, EventArgs e) { if (Session.IsAllowed(RoleConstants.SECURITY_MANAGE_ROLES)) using (var frm = new AssignUserGroups()) frm.ShowDialog(); } private void btnChangePassword_Click(object sender, EventArgs e) { using (var frm = new ChangePassword(new KeyboardControl())) frm.ShowDialog(); } private void btnCashierCheckout_Click(object sender, EventArgs e) { if (Session.IsAllowed(RoleConstants.CASHIER_CHECKOUT)) using (var frm = new CashierCheckoutForm()) frm.ShowDialog(); } private void btnSaleAnalysis_Click(object sender, EventArgs e) { if (Session.IsAllowed(RoleConstants.SALE_ANALYSIS)) using (var frm = new frmSaleAnalysisForm()) frm.ShowDialog(); } private void btnSaleDetail_Click(object sender, EventArgs e) { if (Session.IsAllowed(RoleConstants.SALE_DETAIL)) using (var frm = new FrmSaleDetail()) frm.ShowDialog(); } private void MainForm_Load(object sender, EventArgs e) { #if (DEBUG) MessageBox.Show("This software does not print kots!!!","Debug Mode", MessageBoxButtons.OK , MessageBoxIcon.Exclamation); #endif CheckRoles(); } private void CheckRoles() { btnSale.Visible = Session.IsAllowed(RoleConstants.SALES); btnProduct.Visible = Session.IsAllowed(RoleConstants.PRODUCTS); btnProductGroup.Visible = Session.IsAllowed(RoleConstants.PRODUCTS); btnOpenBill.Visible = Session.IsAllowed(RoleConstants.OPEN_BILL); btnCustomer.Visible = Session.IsAllowed(RoleConstants.CUSTOMERS); btnCreateUser.Visible = Session.IsAllowed(RoleConstants.SECURITY_MANAGE_USERS); btnUserRoles.Visible = Session.IsAllowed(RoleConstants.SECURITY_MANAGE_USERS); btnGroupRoles.Visible = Session.IsAllowed(RoleConstants.SECURITY_MANAGE_ROLES); btnCashierCheckout.Visible = Session.IsAllowed(RoleConstants.CASHIER_CHECKOUT); btnSaleAnalysis.Visible = Session.IsAllowed(RoleConstants.SALE_ANALYSIS); btnSaleDetail.Visible = Session.IsAllowed(RoleConstants.SALE_DETAIL); btnBillDetails.Visible = Session.IsAllowed(RoleConstants.BILL_DETAILS); btnVoidOrReprints.Visible = Session.IsAllowed(RoleConstants.VOID_OR_REPRINTED_BILL_REPORT); btnDiscountReport.Visible = Session.IsAllowed(RoleConstants.VOID_OR_REPRINTED_BILL_REPORT); btnChangePassword.Visible = Session.IsAuthenticated; #if (DEBUG) btnManagement.Visible = true; #else btnManagement.Visible = false; #endif } private void btnGroupRoles_Click(object sender, EventArgs e) { if (Session.IsAllowed(RoleConstants.SECURITY_MANAGE_ROLES)) using (var frm = new AssignGroupRoles()) frm.ShowDialog(); } private void btnSwipeLogin_Click(object sender, EventArgs e) { LoginUser(LoginType.Msr); } private void LoginUser(LoginType loginType) { ILogin login; switch (loginType) { case LoginType.Keyboard: login = new KeyboardLogin(); break; case LoginType.Msr: login = new MsrLogin(); break; default: return; } if (!Session.IsAuthenticated) { if (login.LoginUser()) { Text = "Main Menu - User: " + Session.User.Name; btnLogin.Text = "Logout"; btnSwipeLogin.Visible = false; } } else { login.LogoutUser(); Text = "Main Menu - Login"; btnLogin.Text = "Login"; btnSwipeLogin.Visible = true; } CheckRoles(); } private void btnOpenBill_Click(object sender, EventArgs e) { if (!Session.IsAllowed(RoleConstants.OPEN_BILL)) return; var result = InputBox.Show("Bill Number", "0", InputBox_Validating); if (!result.OK) return; Voucher voucher; using (var bi = new VoucherBI()) voucher = bi.Get(x => x.BillID == result.Text); if (Session.IsAllowed(RoleConstants.SALES)) using (var frmSale = new SalesForm(new BillController(voucher.VoucherID, true))) frmSale.ShowDialog(); } private static void InputBox_Validating(object sender, InputBoxValidatingArgs e) { if (Regex.IsMatch(e.Text, @"^\d+-\d\d\d\d")) return; e.Cancel = true; e.Message = "Bill No should be in format ##-####"; } private void btnBillDetails_Click(object sender, EventArgs e) { if (Session.IsAllowed(RoleConstants.BILL_DETAILS)) using (var frm = new BillDetailsForm()) frm.ShowDialog(); } private void btnVoidOrReprints_Click(object sender, EventArgs e) { if (Session.IsAllowed(RoleConstants.VOID_OR_REPRINTED_BILL_REPORT)) using (var frm = new VoidReprintedForm()) frm.ShowDialog(); } private void btnDiscountReport_Click(object sender, EventArgs e) { using (var frm = new DiscountReportForm()) frm.ShowDialog(); } private void btnManagement_Click(object sender, EventArgs e) { using (var frm = new ManagementForm()) frm.ShowDialog(); } } }