public void CreateNewBill(string username, BillViewModel model)
        {
            //get Employee
            EmployeeRepository employeerepo = new EmployeeRepository(_context);
            var employee = employeerepo.GetByEmpNo(username);
            var empId    = employee.Emp_ID;

            //Create Bill
            BillRepository billrepo = new BillRepository(_context);
            Bill           bill     = new Bill();

            bill.Bill_Status = model.BillStatus;
            bill.Emp_ID      = empId;

            billrepo.AddBill(bill);

            //Create Bill Details
            BillDetailRepository billdetailrepo = new BillDetailRepository(_context);
            Bill_Detail          billdetail     = new Bill_Detail()
            {
                Bill_Amount        = model.BillAmount,
                Bill_Date          = model.BillDate,
                Bill_ModeOfPayment = model.ModeOfPayment,
                Bill_Type          = model.BillType,
                Bill_ID            = bill.Bill_ID,
                Bill_have_SCopy    = (model.BillSCopy != null) ? true : false,
            };

            billdetailrepo.AddBillDetail(billdetail);

            //Add Scanned Copy
            if (billdetail.Bill_have_SCopy)
            {
                BillSCopyRepository bscopyrepo = new BillSCopyRepository(_context);
                Bill_SCopy          billscopy  = new Bill_SCopy()
                {
                    Bill_ID = bill.Bill_ID,
                    SCopy   = model.BillSCopy
                };
                bscopyrepo.AddBillSCopy(billscopy);
            }

            //Add Bill Manager
            //get Manager's EmpID

            String[] emp_no_name = model.Manager.Split('-');
            var      ManagerId   = employeerepo.GetByEmpNo(emp_no_name[0]).Emp_ID;

            BillMRepository bmrepo = new BillMRepository(_context);

            Bill_M billm = new Bill_M();

            billm.Bill_ID = bill.Bill_ID;
            billm.Emp_ID  = ManagerId;

            bmrepo.AddBillM(billm);
        }
        public BillViewModel getBillDetail(Int64 id)
        {
            BillRepository       billrepo       = new BillRepository(_context);
            BillDetailRepository billdetailrepo = new BillDetailRepository(_context);
            BillMRepository      billmrepo      = new BillMRepository(_context);
            BillFMRepository     billfmrepo     = new BillFMRepository(_context);
            BillSCopyRepository  billscopyrepo  = new BillSCopyRepository(_context);
            BillViewModel        bvm            = new BillViewModel();

            Bill        bill         = billrepo.GetByBillID(id);
            Bill_Detail billdetail   = billdetailrepo.GetByBillID(id);
            Bill_M      billmanager  = billmrepo.GetByBillID(id);
            Bill_FM     billfmanager = null;
            Bill_SCopy  billscopy    = null;

            if (bill.Bill_Status == ApricotEnums.BillSatusEnum.APPROVED || bill.Bill_Status == ApricotEnums.BillSatusEnum.CLOSED)
            {
                billfmanager = billfmrepo.GetByBillId(id);
            }

            if (billdetail.Bill_have_SCopy)
            {
                billscopy = billscopyrepo.GetByBillID(id);
            }

            bvm.BillID        = bill.Bill_ID;
            bvm.BillStatus    = bill.Bill_Status;
            bvm.BillAmount    = billdetail.Bill_Amount;
            bvm.BillDate      = billdetail.Bill_Date;
            bvm.BillSCopy     = null;
            bvm.BillType      = billdetail.Bill_Type;
            bvm.FManager      = (billfmanager != null) ? billfmanager.FinanceManager.Emp_No : "Not Aviablable";
            bvm.Manager       = billmanager.Manager.Emp_Name;
            bvm.ModeOfPayment = billdetail.Bill_ModeOfPayment;

            return(bvm);
        }