//For store employee to view catalogue details and update & delete catalogue
 public ActionResult Details(long itemId, string sessionId)
 {
     ViewData["catalogue"] = CatalogueService.GetCatalogueById(itemId);
     ViewData["pricelist"] = PriceListService.GetPriceListByItemId(itemId);
     ViewData["sessionId"] = sessionId;
     return(View());
 }
 public ActionResult StockCard(long itemId, string sessionId)
 {
     ViewData["catalogue"]  = CatalogueService.GetCatalogueById(itemId);
     ViewData["priceList"]  = PriceListService.GetPriceListByItemId(itemId);
     ViewData["stockCards"] = StockCardService.GetStockCardById(itemId);
     ViewData["sessionId"]  = sessionId;
     return(View());
 }
        public ActionResult Delete(bool confirm, long itemId, string sessionId)
        {
            if (confirm)
            {
                if (PriceListService.GetPriceListByItemId(itemId) != null)
                {
                    PriceListService.DeletePriceList(itemId);
                }

                CatalogueService.DeleteCatalogue(itemId);

                List <Inventory> catalogues = CatalogueService.GetAllCatalogue();
                ViewData["catalogues"] = catalogues;
                return(RedirectToAction("All", new { sessionid = sessionId }));
            }
            return(null);
        }
        public ActionResult UpdateNext(long itemId, string sessionId)
        {
            ViewData["itemId"]    = itemId;
            ViewData["pricelist"] = PriceListService.GetPriceListByItemId(itemId);

            if (PriceListService.GetPriceListByItemId(itemId) == null)
            {
                return(RedirectToAction("CreateNext", new { itemId, sessionid = sessionId }));
            }
            else
            {
                List <string> supplierNames = SupplierService.GetAllSupplierNames();
                ViewData["supplierNames"] = supplierNames;
                ViewData["sessionId"]     = sessionId;
                return(View());
            }
        }
        public ActionResult AdjDetails(long adjId, string sessionId)
        {
            List <AdjVoucher> adjVouchers = new List <AdjVoucher>();

            adjVouchers = AdjVoucherService.GetAdjByAdjId(adjId);
            foreach (AdjVoucher adj in adjVouchers)
            {
                Inventory c = CatalogueService.GetCatalogueById(adj.ItemId);
                adj.ItemCode    = c.ItemCode;
                adj.Description = c.Description;
                PriceList p = PriceListService.GetPriceListByItemId(adj.ItemId);
                if (p != null)
                {
                    adj.UnitPrice = p.Supplier1UnitPrice;
                }
                else
                {
                    adj.UnitPrice = 1;
                }
                double total = adj.AdjQty * adj.UnitPrice;
                adj.TotalPrice = Math.Abs(total);
            }
            string adjIdstring  = adjId.ToString("000/000/00");
            string authorisedBy = "Nil";

            if (adjVouchers[0].AuthorisedBy != 0)
            {
                authorisedBy = EmployeeService.GetEmployeeById(adjVouchers[0].AuthorisedBy).EmpName;
            }

            ViewData["adjIdstring"]  = adjIdstring;
            ViewData["adjVouchers"]  = adjVouchers;
            ViewData["authorisedBy"] = authorisedBy;
            ViewData["sessionId"]    = sessionId;
            return(View());
        }
        public ActionResult UpdateReason(List <AdjVoucher> adjVouchers, string sessionId)
        {
            Employee user        = EmployeeService.GetUserBySessionId(sessionId);
            double   totalAmount = 0;

            //To check if user entered reason and if not, to return back to form to show validation message
            foreach (AdjVoucher adj in adjVouchers)
            {
                if (string.IsNullOrWhiteSpace(adj.Reason))
                {
                    ViewData["adjVouchers"] = adjVouchers;
                    ViewData["sessionId"]   = sessionId;
                    return(View("PutReason"));
                }
            }

            foreach (AdjVoucher adj in adjVouchers)
            {
                PriceList priceList = PriceListService.GetPriceListByItemId(adj.ItemId);
                double    price     = 0;
                if (priceList != null)
                {
                    price = priceList.Supplier1UnitPrice;
                }

                double amount = price * adj.AdjQty;
                totalAmount = totalAmount + amount;
                AdjVoucherService.UpdateReason(adj);
            }

            if (totalAmount > -250)
            {
                //status = 2, Pending authorisation by Supervisor
                long adjId = 0;
                foreach (AdjVoucher adj in adjVouchers)
                {
                    if (adj.AdjId != adjId)
                    {
                        adjId = adj.AdjId;
                        AdjVoucherService.UpdateStatus(adjId, 2);
                    }
                }
                //Inform Store supervisor
                List <Employee>   supervisors = new List <Employee>();
                EmailNotification notice      = new EmailNotification();
                supervisors = EmployeeService.GetEmployeeByRole("STORE_SUPERVISOR");
                foreach (Employee s in supervisors)
                {
                    notice.ReceiverMailAddress = EmployeeService.GetUserEmail(s.EmpId);
                    EmailService emailService = new EmailService();
                    Task.Run(() => emailService.SendMail(notice, EmailTrigger.ON_PENDING_ADJVOUCHER));
                }
                TempData["errorMsg"] = "<script>alert('Total discrepancy amount is less than $250, pending for Store Supervisor to authorise.');</script>";
            }
            else
            {
                //status = 3, Pending authorisation by Manager
                long adjId = 0;
                foreach (AdjVoucher adj in adjVouchers)
                {
                    if (adj.AdjId != adjId)
                    {
                        adjId = adj.AdjId;
                        AdjVoucherService.UpdateStatus(adjId, 3);
                    }
                }

                //Inform manager
                List <Employee>   managers = new List <Employee>();
                EmailNotification notice   = new EmailNotification();
                managers = EmployeeService.GetEmployeeByRole("STORE_MANAGER");
                foreach (Employee m in managers)
                {
                    notice.ReceiverMailAddress = EmployeeService.GetUserEmail(m.EmpId);
                    EmailService emailService = new EmailService();
                    Task.Run(() => emailService.SendMail(notice, EmailTrigger.ON_PENDING_ADJVOUCHER));
                }
                TempData["errorMsg"] = "<script>alert('Total discrepancy amount is more than $250, pending for Store Manager to authorise.');</script>";
            }
            ViewData["userName"]  = user.EmpName;
            ViewData["sessionId"] = sessionId;
            return(View("~/Views/StoreLandingPage/Home.cshtml"));
        }