public static String GetNewDisbId(LogicDB context)
        {
            var    disbursement = context.Disbursement.OrderByDescending(x => x.DisbursementId).First();
            string did          = "DISB" + (Convert.ToInt32(disbursement.DisbursementId.Substring(4, 6)) + 1).ToString("000000");

            return(did);
        }
Exemple #2
0
        public static GenerateReportViewModel InitGRVM(string DID)
        {
            var grvm = new GenerateReportViewModel
            {
                fDate              = new DateTime(2017, 1, 1),
                tDate              = DateTime.Today,
                module             = "Disbursements",
                deptID             = DID,
                statcategory       = new List <string>(),
                entcategory        = new List <string>(),
                employee           = new List <string>(),
                supplier           = new List <string>(),
                selectentcategory  = new List <string>(),
                selectstatcategory = new List <string>(),
                data       = new List <ChartViewModel>(),
                entdata    = new List <ChartViewModel>(),
                stattimeDP = new ChartViewModel("Breakdown by Stationery over Time", "", new List <StringDoubleDPViewModel>()),
                enttimeDP  = new ChartViewModel("Breakdown by Entity over Time", "", new List <StringDoubleDPViewModel>()),
                statDP     = new ChartViewModel("Breakdown by Stationery Category", "", new List <StringDoubleDPViewModel>()),
                deptDP     = new ChartViewModel("Breakdown by Entity", "", new List <StringDoubleDPViewModel>())
            };
            LogicDB context = new LogicDB();

            var slist = context.Stationery.GroupBy(x => x.Category).Select(y => y.Key);

            foreach (var l in slist)
            {
                grvm.statcategory.Add(l);
            }
            grvm.selectstatcategory = grvm.statcategory;

            if (DID == "STAT")
            {
                var sslist = context.PurchaseOrder.GroupBy(x => x.SupplierId).Select(y => y.Key);
                foreach (var l in sslist)
                {
                    grvm.supplier.Add(l);
                }

                var eelist = context.StationeryRetrieval.GroupBy(x => x.AspNetUsers.EmployeeName).Select(y => y.Key);
                foreach (var l in eelist)
                {
                    grvm.employee.Add(l);
                }

                var elist = context.Department.GroupBy(x => x.DepartmentId).Select(y => y.Key);
                foreach (var l in elist)
                {
                    grvm.entcategory.Add(l);
                }
                grvm.selectentcategory = grvm.entcategory;
            }
            else
            {
                grvm.entcategory.Add(DID);
                grvm.selectentcategory.Add(DID);
            }

            return(grvm);
        }
        public static string GetNewDisbNo(LogicDB context, string DepartmentId)
        {
            var    disbursement = context.Disbursement.OrderByDescending(x => x.DisbursementId).First();
            string dno          = "D" + DepartmentId + (Convert.ToInt32(disbursement.DisbursementNo.Substring(5, 5)) + 1).ToString("00000");

            return(dno);
        }
Exemple #4
0
        public IEnumerable <DepartmentChargeBackViewModel> GetDepartmentChargeBackViewModels(string userId)
        {
            LogicDB context = new LogicDB();

            String DID = context.Department.
                         Where(x => x.DepartmentHeadId == userId).
                         First().DepartmentId;

            var chargeback = context.Disbursement.
                             Where(x => x.DepartmentId == DID).ToList().
                             Select(x => new DepartmentChargeBackViewModel()
            {
                DisbursementId    = x.DisbursementId,
                DisbursementNo    = x.DisbursementNo,
                DepartmentId      = x.DepartmentId,
                Department        = x.Department,
                AcknowledgedBy    = context.AspNetUsers.Where(y => y.Id == x.AcknowledgedBy).First().EmployeeName,
                DisbursedBy       = x.DisbursedBy,
                Date              = x.Date,
                RequestId         = x.RequestId,
                StationeryRequest = x.StationeryRequest,
                OTP               = x.OTP,
                Status            = x.Status,
                AspNetUsers       = x.AspNetUsers,
                AspNetUsers1      = x.AspNetUsers1,
                TransactionDetail = x.TransactionDetail
            });

            return(chargeback);
        }
        public void SendEmail()
        {
            LogicDB context = new LogicDB();
            // to get the user ID of the current user
            string userId     = User.Identity.GetUserId();
            string sender     = context.AspNetUsers.FirstOrDefault(x => x.Id == userId).EmployeeName;
            string receipient = "*****@*****.**";
            string subject    = "New Pending PO";
            string content    = String.Format("Dear {0},{1}You have new Purchase Orders pending for approval.{2}{3} Regards,{4}{5}", "Manager", Environment.NewLine, Environment.NewLine, Environment.NewLine, Environment.NewLine, sender);

            Email.Send(receipient, subject, content);
        }
        //Convert breakdown of stationery by items to breakdown of stationery by dept
        public List <DisbursementByDeptViewModel> GenerateDisbursement(List <RequestByItemViewModel> model)
        {
            LogicDB context = new LogicDB();
            List <DisbursementByDeptViewModel> disbList = new List <DisbursementByDeptViewModel>();

            for (int i = 0; i < model.Count; i++)
            {
                for (int j = 0; j < model[i].requestList.Count; j++)
                {
                    var disb = disbList.Find(x => x.DepartmentId == model[i].requestList[j].DepartmentId);
                    if (disb != null)
                    {
                        var item = disb.requestList.Find(x => x.ItemId == model[i].ItemId);
                        if (item != null)
                        {
                            item.Quantity += model[i].requestList[j].Quantity;
                        }
                        else
                        {
                            if (model[i].requestList[j].RetrievedQty > 0)
                            {
                                BreakdownByItemViewModel breakdown = new BreakdownByItemViewModel();
                                breakdown.ItemId       = model[i].ItemId;
                                breakdown.Description  = model[i].Description;
                                breakdown.RetrievedQty = model[i].requestList[j].RetrievedQty;
                                disb.requestList.Add(breakdown);
                            }
                        }
                    }
                    else
                    {
                        if (model[i].requestList[j].RetrievedQty > 0)
                        {
                            DisbursementByDeptViewModel disbModel = new DisbursementByDeptViewModel();
                            disbModel.DepartmentId   = model[i].requestList[j].DepartmentId;
                            disbModel.DepartmentName = model[i].requestList[j].DepartmentName;
                            BreakdownByItemViewModel breakdown = new BreakdownByItemViewModel();
                            breakdown.RetrievedQty = model[i].requestList[j].RetrievedQty;
                            breakdown.ItemId       = model[i].ItemId;
                            breakdown.Description  = model[i].Description;
                            disbModel.requestList  = new List <BreakdownByItemViewModel>();
                            disbModel.requestList.Add(breakdown);
                            disbList.Add(disbModel);
                        }
                    }
                }
            }
            return(disbList);
        }
        public string[] GetDelegatedHead(string userId)
        {
            DateTime todayDate = DateTime.Now.Date;
            LogicDB  context   = new LogicDB();

            var query = context.DelegationOfAuthority.Where(x => x.EndDate >= todayDate && x.DelegatedBy == userId).Where(x => x.Status != "VOID").FirstOrDefault();

            if (query == null)
            {
                return(null);
            }
            else
            {
                return(new string[] { query.AspNetUsers1.Id, query.AspNetUsers1.EmployeeName, query.StartDate.ToShortDateString(), query.EndDate.ToShortDateString() });
            }
        }
        public string GetNewRetrievalId()
        {
            LogicDB context = new LogicDB();
            string  rid;
            var     ret = context.StationeryRetrieval.OrderByDescending(x => x.Date).OrderByDescending(x => x.RetrievalId).FirstOrDefault();

            if (ret.Date.Year == DateTime.Now.Year)
            {
                rid = "R" + DateTime.Now.Year.ToString() + "-" + (Convert.ToInt32(ret.RetrievalId.Substring(6, 4)) + 1).ToString("0000");
            }
            else
            {
                rid = "R" + DateTime.Now.Year.ToString() + "-" + "0001";
            }
            return(rid);
        }
        // Format : PO18/02/##
        private static string GetSerialNumber()
        {
            LogicDB context1 = new LogicDB();

            var    lastPoNo     = context1.PurchaseOrder.OrderByDescending(x => x.PONo).FirstOrDefault();
            string current      = lastPoNo.PONo.Substring(8);
            int    month        = Int32.Parse(lastPoNo.PONo.Substring(5, 2));
            int    newSerial    = Int32.Parse(current);
            int    currentmonth = Int32.Parse(DateTime.Now.Month.ToString("00"));

            if (currentmonth != month)
            {
                return("01");
            }
            else
            {
                return((newSerial + 1).ToString("00"));
            }
        }
        // GET: ManageRequest
        public ActionResult Index()
        {
            List <RequestedItemViewModel> models = new List <RequestedItemViewModel>();

            ViewBag.ShowItems = false;
            LogicDB context = new LogicDB();
            string  userId  = User.Identity.GetUserId();
            string  depId   = context.AspNetUsers.FirstOrDefault(x => x.Id == userId).DepartmentId;


            List <StationeryRequest> requests = context.StationeryRequest.Where(x => x.Status == "Pending Approval" && x.DepartmentId == depId).ToList();

            if (requests.Count > 0)
            {
                ViewBag.ShowItems = true;

                foreach (var c in requests)
                {
                    RequestedItemViewModel reqItem = new RequestedItemViewModel();
                    reqItem.RequestDate = String.Format("{0:dd/MM/yyyy}", c.RequestDate);
                    AspNetUsers emp = context.AspNetUsers.FirstOrDefault(x => x.Id == c.RequestedBy);
                    reqItem.Empname = emp.EmployeeName;
                    var requestId = c.RequestId;
                    reqItem.RequestID = c.RequestId;
                    List <TransactionDetail> transactionDetails = context.TransactionDetail.Where(x => x.TransactionRef == requestId).ToList();
                    List <Stationery>        items = new List <Stationery>();
                    foreach (var i in transactionDetails)
                    {
                        Stationery item = context.Stationery.FirstOrDefault(x => x.ItemId == i.ItemId);
                        item.QuantityTransit = i.Quantity;
                        items.Add(item);
                    }
                    reqItem.Itemlist = items;
                    models.Add(reqItem);
                }
            }
            return(View(models));
        }
        public ActionResult Index(int id = 0)
        {
            LogicDB context = new LogicDB();
            CollectionPointViewModel model = new CollectionPointViewModel();

            string userId = User.Identity.GetUserId();

            int    cpId   = disbursementService.GetDeptCpId(userId);
            string cpName = disbursementService.GetDeptCpName(userId);

            ViewBag.cpId   = cpId;
            ViewBag.cpName = cpName;

            if (id == 1)
            {
                ViewBag.successHandler = 1;
            }
            else if (id == 2)
            {
                ViewBag.successHandler = 2;
            }

            return(View(model));
        }
Exemple #12
0
        public ActionResult ManageRep(ManageRepViewModel model)
        {
            ApplicationUserManager manager = HttpContext.GetOwinContext().GetUserManager <ApplicationUserManager>();
            ApplicationDbContext   context = new ApplicationDbContext();

            LogicDB database = new LogicDB();
            //Retrieve department head
            string depHeadId = User.Identity.GetUserId();
            string deptId    = gmService.GetDeptIdOfUser(depHeadId);

            //Get previous employee rep
            string oldEmpRepId = gmService.GetCurrentRepId(deptId);

            //Update to new employee rep
            gmService.UpdateDepartmentRep(model.UserId, deptId);

            //Change previous Department Rep to employee
            manager.RemoveFromRole(oldEmpRepId, "Department Representative");
            manager.AddToRole(oldEmpRepId, "Employee");
            //Assign new employee to Department Rep
            manager.RemoveFromRole(model.UserId, "Employee");
            manager.AddToRole(model.UserId, "Department Representative");
            return(RedirectToAction("Index", new { id = 1 }));
        }
Exemple #13
0
 public RaiseRequestController()
 {
     _context = new LogicDB();
 }
        public bool SaveAndDisburse(List <RequestByItemViewModel> model, string userId)
        {
            LogicDB context = new LogicDB();

            using (var dbContextTransaction = context.Database.BeginTransaction())
            {
                try
                {
                    StationeryRetrieval retrieval = new StationeryRetrieval();
                    string rid = GetNewRetrievalId();
                    retrieval.RetrievalId = rid;
                    retrieval.RetrievedBy = userId;
                    retrieval.Date        = DateTime.Now;

                    foreach (var sr in model)
                    {
                        int retQty = sr.requestList.Sum(x => x.RetrievedQty);
                        if (retQty > 0)
                        {
                            TransactionDetail detail = new TransactionDetail();
                            detail.ItemId          = sr.ItemId;
                            detail.Quantity        = retQty;
                            detail.TransactionDate = DateTime.Now;
                            detail.Remarks         = "Retrieved";
                            detail.TransactionRef  = rid;
                            retrieval.TransactionDetail.Add(detail);

                            //Less off from stationery

                            var item = context.Stationery.FirstOrDefault(x => x.ItemId == sr.ItemId);
                            if (item != null)
                            {
                                item.QuantityWarehouse -= retQty;
                                item.QuantityTransit   += retQty;
                            }
                        }
                    }
                    context.StationeryRetrieval.Add(retrieval);
                    context.SaveChanges();

                    List <RequestByIdViewModel> requests = CreateDisbHelpers.GetRequestQuery(context).OrderBy(x => x.RequestId).ToList();

                    List <DisbursementByDeptViewModel> disbList = GenerateDisbursement(model);

                    foreach (var dept in disbList)
                    {
                        string currentDeptId = dept.DepartmentId;
                        string disbNo        = CreateDisbHelpers.GetNewDisbNo(context, currentDeptId);
                        string OTP;
                        do
                        {
                            Random rand = new Random();
                            OTP = rand.Next(10000).ToString("0000");
                        } while (context.Disbursement.Where(x => x.OTP == OTP).FirstOrDefault() != null);

                        Dictionary <string, int> tempDict = new Dictionary <string, int>();
                        foreach (var retItem in dept.requestList)
                        {
                            tempDict.Add(retItem.Description, retItem.RetrievedQty);
                        }

                        var deptReqList = requests.Where(x => x.DepartmentId == dept.DepartmentId).ToList();

                        foreach (var req in deptReqList)
                        {
                            bool isComplete = true;
                            foreach (var item in req.ItemList)
                            {
                                var disbItem = dept.requestList.FirstOrDefault(x => x.ItemId == item.ItemId);
                                if (disbItem != null)
                                {
                                    if (disbItem.RetrievedQty >= item.Quantity)
                                    {
                                        disbItem.RetrievedQty -= item.Quantity;
                                    }
                                    else
                                    {
                                        item.Quantity         = disbItem.RetrievedQty;
                                        disbItem.RetrievedQty = 0; //0
                                        isComplete            = false;
                                    }
                                }
                                else
                                {
                                    item.Quantity = 0;
                                    isComplete    = false;
                                }
                            }

                            foreach (var item in req.ItemList)
                            {
                                if (item.Quantity > 0)
                                {
                                    Disbursement      newDisb   = new Disbursement();
                                    TransactionDetail newDetail = new TransactionDetail();
                                    newDisb.DisbursementId    = CreateDisbHelpers.GetNewDisbId(context);
                                    newDisb.DisbursementNo    = disbNo;
                                    newDisb.DepartmentId      = currentDeptId;
                                    newDisb.DisbursedBy       = userId;
                                    newDisb.Date              = DateTime.Now;
                                    newDisb.RequestId         = req.RequestId;
                                    newDisb.Status            = "In Transit";
                                    newDisb.OTP               = OTP;
                                    newDetail.ItemId          = item.ItemId;
                                    newDetail.Quantity        = item.Quantity;
                                    newDetail.TransactionRef  = newDisb.DisbursementId;
                                    newDetail.TransactionDate = DateTime.Now;
                                    newDetail.UnitPrice       = item.UnitPrice;
                                    newDetail.Remarks         = "In Transit";
                                    newDisb.TransactionDetail.Add(newDetail);
                                    context.Disbursement.Add(newDisb);
                                    context.SaveChanges();
                                }
                            }

                            var currentReq = context.StationeryRequest.FirstOrDefault(x => x.RequestId == req.RequestId);
                            if (isComplete)
                            {
                                currentReq.Status = "Completed";
                            }
                            else
                            {
                                currentReq.Status = "Partially Fulfilled";
                            }
                        }
                        //Send email to dept rep
                        string email   = context.Department.FirstOrDefault(x => x.DepartmentId == dept.DepartmentId).AspNetUsers1.Email;
                        string subject = string.Format("Stationeries ready for collection (Disbursement No: {0})", disbNo);

                        string content = string.Format("Disbursement No: {0}{1}Please quote the OTP below when collecting your stationeries.{2}OTP: {3}{4}Collection Point: {5}{6}Time: {7}{8}Item\t\t\t\t\t\t\tQuantity{9}",
                                                       disbNo, Environment.NewLine, Environment.NewLine, OTP, Environment.NewLine, dept.CollectionDescription, Environment.NewLine, dept.CollectionTime, Environment.NewLine, Environment.NewLine);
                        foreach (KeyValuePair <string, int> entry in tempDict)
                        {
                            content += string.Format("{0}\t\t\t\t\t\t{1}{2}", entry.Key, entry.Value, Environment.NewLine);
                        }
                        Email.Send(email, subject, content);
                    }

                    dbContextTransaction.Commit();
                    return(true);
                }
                catch (Exception)
                {
                    dbContextTransaction.Rollback();
                    return(false);
                }
            }
        }
Exemple #15
0
 public ReturnToWarehouseController()
 {
     _context = new LogicDB();
 }
 public ManageStationeryController()
 {
     _context = new LogicDB();
 }
 public DelegateHeadController()
 {
     _context = new LogicDB();
 }
 public ManageRequestController()
 {
     _context = new LogicDB();
 }
 public InvoiceController()
 {
     _context = new LogicDB();
 }
Exemple #20
0
 public ValidateInvoiceController()
 {
     _context = new LogicDB();
 }
Exemple #21
0
 public ManagePostponeCollectionDateDepartmentController()
 {
     _context = new LogicDB();
 }
Exemple #22
0
        public async Task <ActionResult> Login(LoginViewModel model, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            // This doesn't count login failures towards account lockout
            // To enable password failures to trigger account lockout, change to shouldLockout: true
            var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout : false);

            switch (result)
            {
            case SignInStatus.Success:
                //Check doa for list of acting department heads
                LogicDB context   = new LogicDB();
                var     todayDate = DateTime.Now.Date;
                ApplicationDbContext          appDb        = new ApplicationDbContext();
                UserManager <ApplicationUser> _userManager = HttpContext.GetOwinContext().GetUserManager <ApplicationUserManager>();
                //check doa for list of invalid acting department heads
                var doaExpList = context.DelegationOfAuthority.Where(x => x.StartDate > todayDate || x.EndDate < todayDate || x.Status == "VOID").ToList();
                foreach (var doaExp in doaExpList)
                {
                    if (_userManager.IsInRole(doaExp.DelegatedTo, "Acting Department Head"))
                    {
                        using (var dbContextTransaction = appDb.Database.BeginTransaction())
                        {
                            try
                            {
                                _userManager.AddToRole(doaExp.DelegatedTo, "Employee");
                                _userManager.RemoveFromRole(doaExp.DelegatedTo, "Acting Department Head");
                                dbContextTransaction.Commit();
                            }
                            catch (Exception)
                            {
                                dbContextTransaction.Rollback();
                            }
                        }
                    }
                    else
                    {
                        continue;
                    }
                }
                //Valid list of doa
                var doaList = context.DelegationOfAuthority.Where(x => x.StartDate <= todayDate && x.EndDate >= todayDate).Where(x => x.Status != "VOID").ToList();
                foreach (var doa in doaList)
                {
                    if (_userManager.IsInRole(doa.DelegatedTo, "Acting Department Head"))
                    {
                        continue;
                    }
                    else
                    {
                        using (var dbContextTransaction = appDb.Database.BeginTransaction())
                        {
                            try
                            {
                                if (_userManager.IsInRole(doa.DelegatedTo, "Employee"))
                                {
                                    _userManager.AddToRole(doa.DelegatedTo, "Acting Department Head");
                                    _userManager.RemoveFromRole(doa.DelegatedTo, "Employee");
                                }
                                dbContextTransaction.Commit();
                            }
                            catch (Exception)
                            {
                                dbContextTransaction.Rollback();
                            }
                        }
                    }
                }
                return(RedirectToLocal(returnUrl));

            case SignInStatus.LockedOut:
                return(View("Lockout"));

            case SignInStatus.RequiresVerification:
                return(RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe }));

            case SignInStatus.Failure:
            default:
                ModelState.AddModelError("", "Invalid login attempt.");
                return(View(model));
            }
        }
        public List <RequestByItemViewModel> GetListRequestByItem()
        {
            LogicDB context = new LogicDB();
            List <RequestByItemViewModel> model = new List <RequestByItemViewModel>();
            var requests = context.RequestByItemView.OrderBy(x => x.ItemId).ToList();
            var disbList = (from x in context.DisbByDept
                            select new SimpleDisbViewModel
            {
                DepartmentId = x.DepartmentId,
                DepartmentName = x.DepartmentName,
                ItemId = x.ItemId,
                Description = x.Description,
                Quantity = x.Quantity
            }).ToList();

            foreach (var req in requests)
            {
                var item = model.Find(x => x.ItemId == req.ItemId);

                var disb = disbList.FirstOrDefault(x => x.DepartmentId == req.DepartmentId && x.ItemId == req.ItemId);

                if (item != null)
                {
                    BreakdownByDeptViewModel newModel;
                    if (disb == null)
                    {
                        newModel = new BreakdownByDeptViewModel
                        {
                            DepartmentId   = req.DepartmentId,
                            DepartmentName = req.DepartmentName,
                            Quantity       = (int)req.Quantity
                        };
                    }
                    else
                    {
                        newModel = new BreakdownByDeptViewModel
                        {
                            DepartmentId   = req.DepartmentId,
                            DepartmentName = req.DepartmentName,
                            Quantity       = ((int)req.Quantity - (int)disb.Quantity)
                        };
                        disb.Quantity = 0;
                    }

                    if (newModel.Quantity > 0)
                    {
                        item.requestList.Add(newModel);
                    }
                }
                else
                {
                    RequestByItemViewModel requestByItemViewModel = new RequestByItemViewModel();
                    requestByItemViewModel.ItemId      = req.ItemId;
                    requestByItemViewModel.Description = req.Description;
                    requestByItemViewModel.requestList = new List <BreakdownByDeptViewModel>();
                    BreakdownByDeptViewModel newModel;
                    if (disb == null)
                    {
                        newModel = new BreakdownByDeptViewModel
                        {
                            DepartmentId   = req.DepartmentId,
                            DepartmentName = req.DepartmentName,
                            Quantity       = (int)req.Quantity
                        };
                    }
                    else
                    {
                        newModel = new BreakdownByDeptViewModel
                        {
                            DepartmentId   = req.DepartmentId,
                            DepartmentName = req.DepartmentName,
                            Quantity       = ((int)req.Quantity - (int)disb.Quantity)
                        };
                        disb.Quantity = 0;
                    }

                    if (newModel.Quantity > 0)
                    {
                        requestByItemViewModel.requestList.Add(newModel);
                        model.Add(requestByItemViewModel);
                    }
                }
            }
            return(model);
        }
        public string GetUserEmail(string id)
        {
            LogicDB context = new LogicDB();

            return(context.AspNetUsers.FirstOrDefault(x => x.Id == id).Email);
        }
Exemple #25
0
        public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
        {
            var userManager = context.OwinContext.GetUserManager <ApplicationUserManager>();

            ApplicationUser user = await userManager.FindAsync(context.UserName, context.Password);

            if (user == null)
            {
                context.SetError("invalid_grant", "The user name or password is incorrect.");
                return;
            }

            //Check doa for list of acting department heads
            LogicDB dbContext          = new LogicDB();
            var     todayDate          = DateTime.Now.Date;
            ApplicationDbContext appDb = new ApplicationDbContext();

            //check doa for list of invalid acting department heads
            var doaExpList = dbContext.DelegationOfAuthority.Where(x => x.StartDate > todayDate || x.EndDate < todayDate || x.Status == "VOID").ToList();

            foreach (var doaExp in doaExpList)
            {
                if (userManager.IsInRole(doaExp.DelegatedTo, "Acting Department Head"))
                {
                    using (var dbContextTransaction = appDb.Database.BeginTransaction())
                    {
                        try
                        {
                            userManager.AddToRole(doaExp.DelegatedTo, "Employee");
                            userManager.RemoveFromRole(doaExp.DelegatedTo, "Acting Department Head");
                            dbContextTransaction.Commit();
                        }
                        catch (Exception)
                        {
                            dbContextTransaction.Rollback();
                        }
                    }
                }
                else
                {
                    continue;
                }
            }

            //Check for valid
            var doaList = dbContext.DelegationOfAuthority.Where(x => x.StartDate <= todayDate && x.EndDate >= todayDate).Where(x => x.Status != "VOID").ToList();

            foreach (var doa in doaList)
            {
                if (userManager.IsInRole(doa.DelegatedTo, "Acting Department Head"))
                {
                    continue;
                }
                else
                {
                    using (var dbContextTransaction = appDb.Database.BeginTransaction())
                    {
                        try
                        {
                            if (userManager.IsInRole(doa.DelegatedTo, "Employee"))
                            {
                                userManager.AddToRole(doa.DelegatedTo, "Acting Department Head");
                                userManager.RemoveFromRole(doa.DelegatedTo, "Employee");
                            }
                            dbContextTransaction.Commit();
                        }
                        catch (Exception)
                        {
                            dbContextTransaction.Rollback();
                        }
                    }
                }
            }


            ClaimsIdentity oAuthIdentity = await user.GenerateUserIdentityAsync(userManager,
                                                                                OAuthDefaults.AuthenticationType);

            ClaimsIdentity cookiesIdentity = await user.GenerateUserIdentityAsync(userManager,
                                                                                  CookieAuthenticationDefaults.AuthenticationType);


            System.Collections.Generic.IList <string> s = userManager.GetRoles(user.Id);
            AuthenticationProperties properties         = CreateProperties(user.Id, s);
            AuthenticationTicket     ticket             = new AuthenticationTicket(oAuthIdentity, properties);

            context.Validated(ticket);
            context.Request.Context.Authentication.SignIn(cookiesIdentity);
        }
        public List <DisbursementByDeptViewModel> GetListDisb()
        {
            LogicDB context = new LogicDB();
            var     query   = (from x in context.Disbursement
                               join y in context.TransactionDetail
                               on x.DisbursementId equals y.TransactionRef
                               join z in context.Department
                               on x.DepartmentId equals z.DepartmentId
                               join c in context.CollectionPoint
                               on z.CollectionPointId equals c.CollectionPointId
                               join i in context.Stationery
                               on y.ItemId equals i.ItemId
                               where x.Status == "In Transit"
                               select new
            {
                x.DepartmentId,
                z.DepartmentName,
                c.CollectionPointId,
                c.CollectionDescription,
                y.ItemId,
                i.Description,
                y.Quantity
            }).ToList();

            List <DisbursementByDeptViewModel> model = new List <DisbursementByDeptViewModel>();

            foreach (var item in query)
            {
                var deptExists = model.FirstOrDefault(x => x.DepartmentId == item.DepartmentId);
                if (deptExists != null)
                {
                    var itemExists = deptExists.requestList.FirstOrDefault(x => x.ItemId == item.ItemId);
                    if (itemExists != null)
                    {
                        itemExists.Quantity += item.Quantity;
                    }
                    else
                    {
                        BreakdownByItemViewModel newItemModel = new BreakdownByItemViewModel();
                        newItemModel.ItemId      = item.ItemId;
                        newItemModel.Description = item.Description;
                        newItemModel.Quantity    = item.Quantity;
                        deptExists.requestList.Add(newItemModel);
                    }
                }
                else
                {
                    DisbursementByDeptViewModel newDeptModel = new DisbursementByDeptViewModel();
                    newDeptModel.DepartmentId   = item.DepartmentId;
                    newDeptModel.DepartmentName = item.DepartmentName;

                    List <BreakdownByItemViewModel> newItemList = new List <BreakdownByItemViewModel>();

                    BreakdownByItemViewModel newItemModel = new BreakdownByItemViewModel();
                    newItemModel.ItemId      = item.ItemId;
                    newItemModel.Description = item.Description;
                    newItemModel.Quantity    = item.Quantity;

                    newItemList.Add(newItemModel);
                    newDeptModel.requestList = newItemList;
                    model.Add(newDeptModel);
                }
            }
            return(model);
        }
Exemple #27
0
        public static GenerateReportViewModel InitGRVM(string DID, DateTime?fromDateTP, DateTime?toDateTP,
                                                       string module, List <string> selstatcat, List <string> seldeptcat, List <string> seleecat, List <string> selsscat)
        {
            LogicDB context = new LogicDB();
            var     grvm    = new GenerateReportViewModel
            {
                fDate              = (DateTime)fromDateTP,
                tDate              = (DateTime)toDateTP,
                module             = module,
                deptID             = DID,
                statcategory       = new List <string>(),
                entcategory        = new List <string>(),
                employee           = new List <string>(),
                supplier           = new List <string>(),
                selectentcategory  = new List <string>(),
                selectstatcategory = new List <string>(),
                data       = new List <ChartViewModel>(),
                entdata    = new List <ChartViewModel>(),
                stattimeDP = new ChartViewModel("Breakdown by Stationery over Time", "", new List <StringDoubleDPViewModel>()),
                enttimeDP  = new ChartViewModel("Breakdown by Entity over Time", "", new List <StringDoubleDPViewModel>()),
                statDP     = new ChartViewModel("Breakdown by Stationery Category", "", new List <StringDoubleDPViewModel>()),
                deptDP     = new ChartViewModel("Breakdown by Entity", "", new List <StringDoubleDPViewModel>())
            };

            var slist = context.Stationery.GroupBy(x => x.Category).Select(y => y.Key);

            foreach (var l in slist)
            {
                grvm.statcategory.Add(l);
            }

            if (selstatcat == null)
            {
                foreach (var l in grvm.statcategory)
                {
                    grvm.selectstatcategory.Add(l);
                }
            }
            else
            {
                foreach (var l in selstatcat)
                {
                    grvm.selectstatcategory.Add(l);
                }
            }

            if (DID == "STAT")
            {
                var sslist = context.PurchaseOrder.GroupBy(x => x.SupplierId).Select(y => y.Key);

                foreach (var l in sslist)
                {
                    grvm.supplier.Add(l);
                }

                var eelist = context.StationeryRetrieval.GroupBy(x => x.AspNetUsers.EmployeeName).Select(y => y.Key);
                foreach (var l in eelist)
                {
                    grvm.employee.Add(l);
                }

                var entlist = context.Department.GroupBy(x => x.DepartmentId).Select(y => y.Key);
                foreach (var l in entlist)
                {
                    grvm.entcategory.Add(l);
                }
                if (module == "Purchases")
                {
                    if (selsscat == null)
                    {
                        foreach (var l in sslist)
                        {
                            grvm.selectentcategory.Add(l);
                        }
                    }
                    else
                    {
                        foreach (var l in selsscat)
                        {
                            grvm.selectentcategory.Add(l);
                        }
                    }
                }

                if (module == "Retrieval")
                {
                    if (seleecat == null)
                    {
                        foreach (var l in eelist)
                        {
                            grvm.selectentcategory.Add(l);
                        }
                    }
                    else
                    {
                        foreach (var l in seleecat)
                        {
                            grvm.selectentcategory.Add(l);
                        }
                    }
                }
                else if (module == "Disbursements" || module == "ChargeBack" || module == "Requests")
                {
                    if (seldeptcat == null)
                    {
                        foreach (var l in grvm.entcategory)
                        {
                            grvm.selectentcategory.Add(l);
                        }
                    }
                    else
                    {
                        foreach (var l in seldeptcat)
                        {
                            grvm.selectentcategory.Add(l);
                        }
                    }
                }
            }

            else
            {
                grvm.entcategory.Add(DID);
                grvm.selectentcategory.Add(DID);
            }



            return(grvm);
        }
Exemple #28
0
 public ClerkController()
 {
     _context = new LogicDB();
     rand     = new Random();
 }
 public DepartmentHeadController()
 {
     _context = new LogicDB();
 }
        public static List <RequestByIdViewModel> GetRequestQuery(LogicDB context)
        {
            List <SimpleRequestViewModel> requests = (from x in context.RequestByReqIdView
                                                      select new SimpleRequestViewModel
            {
                RequestId = x.RequestId,
                DepartmentId = x.DepartmentId,
                ItemId = x.ItemId,
                UnitPrice = x.UnitPrice,
                Quantity = x.Quantity
            }).ToList();

            var offsets = (from x in context.Disbursement
                           join d in context.Department
                           on x.DepartmentId equals d.DepartmentId
                           join y in context.TransactionDetail
                           on x.DisbursementId equals y.TransactionRef
                           join i in context.Stationery
                           on y.ItemId equals i.ItemId
                           join z in context.StationeryRequest
                           on x.RequestId equals z.RequestId
                           where z.Status == "Partially Fulfilled"
                           select new SimpleDisbViewModel
            {
                RequestId = x.RequestId,
                DepartmentId = x.DepartmentId,
                DepartmentName = d.DepartmentName,
                ItemId = y.ItemId,
                Description = i.Description,
                Quantity = y.Quantity
            }).ToList();

            foreach (var req in requests)
            {
                var disb = offsets.FirstOrDefault(x => x.RequestId == req.RequestId && x.ItemId == req.ItemId);
                if (disb != null)
                {
                    req.Quantity -= (int)disb.Quantity;
                }
            }

            List <RequestByIdViewModel> model = new List <RequestByIdViewModel>();

            foreach (var item in requests)
            {
                var exist = model.FirstOrDefault(x => x.RequestId == item.RequestId && x.DepartmentId == item.DepartmentId);
                if (exist != null)
                {
                    DeptAndItemViewModel newVM = new DeptAndItemViewModel();

                    newVM.ItemId    = item.ItemId;
                    newVM.UnitPrice = item.UnitPrice;
                    newVM.Quantity  = item.Quantity;

                    exist.ItemList.Add(newVM);
                }
                else
                {
                    RequestByIdViewModel newRVM = new RequestByIdViewModel();
                    newRVM.RequestId    = item.RequestId;
                    newRVM.DepartmentId = item.DepartmentId;

                    List <DeptAndItemViewModel> newList = new List <DeptAndItemViewModel>();
                    DeptAndItemViewModel        newVM   = new DeptAndItemViewModel();
                    newVM.ItemId    = item.ItemId;
                    newVM.UnitPrice = item.UnitPrice;
                    newVM.Quantity  = item.Quantity;
                    newList.Add(newVM);

                    newRVM.ItemList = newList;
                    model.Add(newRVM);
                }
            }


            return(model);
        }