Esempio n. 1
0
 public void CheckinEmail(bool?isLate, bool?isfined, tb_CSUStudent student, tb_CSUCheckoutCheckin checkout, bool isTest = false)
 {
     mailMessage.To.Clear();
     mailMessage.From = new MailAddress("*****@*****.**");
     mailMessage.To.Add(isTest ? SessionVariables.CurrentUser.EMAIL : student.EMAIL_ADDRESS);
     // add subject
     mailMessage.Subject =
         checkout.ItemUPCFK + " Check-in at UTRC Checkout";
     // add body
     if (isLate == true && isfined != true)
     {
         text = student.FIRST_NAME + " " + student.LAST_NAME + ", </br> </br>" +
                "Thank you for returning " + checkout.ItemUPCFK + ". Unfortunately, this item was returned late." +
                "</br></br> -UTRC Management </br> http://utrc.casa.colostate.edu/";
     }
     if (isfined == true)
     {
         text = student.FIRST_NAME + " " + student.LAST_NAME + ", </br></br>" +
                "Thank you for returning " + checkout.ItemUPCFK +
                ". Unfortunately, this item was returned late and a fine will be assessed to your student account. " +
                "Fines are applied on the 15th of each month, and will appear on your account the following month." +
                " </br></br> -UTRC Management </br> http://utrc.casa.colostate.edu/";
     }
     if (isfined != true && isLate != true)
     {
         text = student.FIRST_NAME + " " + student.LAST_NAME + ", </br></br>" +
                "Thank you for returning " + checkout.ItemUPCFK + " on time. " +
                "</br></br> -UTRC Management </br> http://utrc.casa.colostate.edu/";
     }
     // now send it
     SendMailHtml(mailMessage, text);
 }
 public ActionResult Edit([Bind(Include = "CheckoutCheckinId,CSU_IDFK,ItemUPCFK,CheckoutLabTech,CheckoutDate,CheckinLabTech,CheckinDate,CheckoutLocationFK,CheckinLocationFK, isLate, isFined, isPaid")] tb_CSUCheckoutCheckin tb_CSUCheckoutCheckin)
 {
     if (ModelState.IsValid)
     {
         db.Entry(tb_CSUCheckoutCheckin).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("isLate"));
     }
     return(View(tb_CSUCheckoutCheckin));
 }
Esempio n. 3
0
        public ActionResult CheckinSave(tb_CSUCheckoutCheckin id)
        {
            try
            {
                // Checkin_Checkout_Entities tb = new Checkin_Checkout_Entities();
                #region CheckinDetails
                //this is to select the checkin record
                var checkIn = id;

                if (checkIn == null)
                {
                    ViewBag.Message = "There was an error checking that Item in";
                    return(View("Index"));
                }
                checkIn.CheckinDate       = DateTime.Now;
                checkIn.CheckinLabTech    = SessionVariables.CurrentUserId;
                checkIn.CheckinLocationFK = SessionVariables.CurrentUserLocation;

                #endregion

                //checks for a late return
                LateCheck(checkIn, out checkIn, out stuRec);

                // resets isCheckedOut
                //var itemupc = stuRec.WAITLIST_RESERVED;
                var item = db.tb_CSULabInventoryItems.FirstOrDefault(s => s.ItemUPC == id.ItemUPCFK);
                item.isCheckedOut = null;

                //Save changes, send email
                db.Entry(checkIn).State = EntityState.Modified;
                db.SaveChanges();

                // send checkin email
                email.CheckinEmail(checkIn.isLate, checkIn.isFined, stuRec, checkIn);

                // if waitlist item is being checked in, update waitlist
                if (checkIn.isWaitlistHP == true || checkIn.isWaitlistMac == true)
                {
                    TempData["Message"] = checkIn.ItemUPCFK + " successfully checked in at " + DateTime.Now.ToString("g");
                    return(RedirectToAction("WaitlistStatusCheck", "tb_LongtermWaitlist"));
                }
                else
                {
                    IQueryable <ViewModels.CkVw> checkinView = GetCheckInView();
                    ViewBag.Message = checkIn.ItemUPCFK + " successfully checked in at " + DateTime.Now.ToString("g");
                    ModelState.Clear();
                    return(View("Index", checkinView));
                }
            }
            catch
            {
                ViewBag.Message = "ERRORS! ALL THE ERRORS!!!";
                return(View("Index"));
            }
        }
        public ActionResult Create([Bind(Include = "CheckoutCheckinId,CSU_IDFK,ItemIDFK,CheckoutLabTech,CheckoutDate,CheckinLabTech,CheckinDate,CheckoutLocationFK,CheckinLocationFK")] tb_CSUCheckoutCheckin tb_CSUCheckoutCheckin)
        {
            if (ModelState.IsValid)
            {
                db.tb_CSUCheckoutCheckin.Add(tb_CSUCheckoutCheckin);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(tb_CSUCheckoutCheckin));
        }
Esempio n. 5
0
        public void testCheckinEmailLateFine()
        {
            tb_CSUStudent student = new tb_CSUStudent();

            student.FIRST_NAME = SessionVariables.CurrentUser.First_Name;
            student.LAST_NAME  = SessionVariables.CurrentUser.Last_Name;
            tb_CSUCheckoutCheckin checkout = new tb_CSUCheckoutCheckin();

            checkout.ItemUPCFK = "Test Item";
            CheckinEmail(true, true, student, checkout, true);
        }
Esempio n. 6
0
        public void testLateEmail()
        {
            tb_CSUStudent student = new tb_CSUStudent();

            student.FIRST_NAME = SessionVariables.CurrentUser.First_Name;
            student.LAST_NAME  = SessionVariables.CurrentUser.Last_Name;
            tb_CSUCheckoutCheckin checkout = new tb_CSUCheckoutCheckin();

            checkout.ItemUPCFK = "Test Item";
            checkout.DueDate   = DateTime.Now;
            LateEmail(student, checkout, true);
        }
Esempio n. 7
0
        public void LateEmail(tb_CSUStudent student, tb_CSUCheckoutCheckin checkout, bool isTest = false)
        {
            mailMessage.To.Clear();
            mailMessage.From = new MailAddress("*****@*****.**");
            mailMessage.To.Add(isTest ? SessionVariables.CurrentUser.EMAIL : student.EMAIL_ADDRESS);
            // add subject
            mailMessage.Subject = checkout.ItemUPCFK + " NOT RETURNED!!!";
            text = student.FIRST_NAME + " " + student.LAST_NAME + ", </br> </br>" +
                   "Our records indicate you have not returned " + checkout.ItemUPCFK + " by " + checkout.DueDate + " and our checkout desk staff has closed for the day. " +
                   "Be advised, you will be assesed a late fee on the item in accordance with the Laptop Agreement found here: " +
                   "http://utrc.casa.colostate.edu/waiver/" + "." +

                   "</br></br> -UTRC Management";

            SendMailHtml(mailMessage, text);
        }
Esempio n. 8
0
        public void LongtermDue(tb_CSUStudent student, tb_CSUCheckoutCheckin checkout, bool isTest = false)
        {
            mailMessage.To.Clear();
            mailMessage.From = new MailAddress("*****@*****.**");
            mailMessage.To.Add(isTest ? SessionVariables.CurrentUser.EMAIL : student.EMAIL_ADDRESS);
            // add subject
            mailMessage.Subject = checkout.ItemUPCFK + " Due Back Soon!";
            text = student.FIRST_NAME + " " + student.LAST_NAME + ", </br> </br>" +
                   "Our records indicate you have had " + checkout.ItemUPCFK + " on longterm checkout since " + checkout.CheckoutDate + " and the due date for the item is " + checkout.DueDate +
                   ". Please return the item before the due date or" +
                   " you will be assesed a late fee on the item in accordance with the Laptop Agreement found here: " +
                   "http://utrc.casa.colostate.edu/waiver/" + "." +

                   "</br></br> -UTRC Management";

            SendMailHtml(mailMessage, text);
        }
Esempio n. 9
0
        private void LateCheck(tb_CSUCheckoutCheckin checkin, out tb_CSUCheckoutCheckin checkIn, out tb_CSUStudent stuRec)
        {
            // assigns records
            checkIn = checkin;
            stuRec  = db.tb_CSUStudent.FirstOrDefault(m => m.CSU_ID == checkin.CSU_IDFK);
            if (checkIn == null)
            {
                return;
            }
            if (stuRec == null)
            {
                return;
            }


            //checks for a late checkin by 6 hours.
            var fullStudentName = stuRec.FIRST_NAME + " " + stuRec.LAST_NAME;

            var lateCheck = checkIn.CheckinDate < checkIn.DueDate;

            if (lateCheck || checkIn.isLongterm == true)
            {
                return;
            }

            checkIn.isLate  = true;
            ViewBag.Message = checkIn.ItemUPCFK + " is late, a warning will be issued to " + fullStudentName;

            Debug.Assert(checkIn.DueDate != null, "checkIn.DueDate != null");

            DateTime overdueCheck = checkIn.DueDate.Value.AddHours(18);
            var      fineCheck    = checkIn.CheckinDate < overdueCheck;

            if (fineCheck)
            {
                return;
            }
            checkIn.isFined = true;
            ViewBag.Message = checkIn.ItemUPCFK + " is late, a fine will be issued to " + fullStudentName;
        }
Esempio n. 10
0
        public void CheckoutEmail(tb_CSUStudent student, tb_CSUCheckoutCheckin checkout, bool isTest = false)
        {
            mailMessage.To.Clear();
            mailMessage.From = new MailAddress("*****@*****.**");
            mailMessage.To.Add(isTest ? SessionVariables.CurrentUser.EMAIL : student.EMAIL_ADDRESS);
            // add subject
            mailMessage.Subject =
                checkout.ItemUPCFK + " Checked-out from UTRC Checkout";
            // add body
            text =
                student.FIRST_NAME + " " + student.LAST_NAME + "," + "</br> </br>" +
                "Our records indicate that you checked out " + checkout.ItemUPCFK + " on " + checkout.CheckoutDate.Value.ToString("M") + " at " + checkout.CheckoutDate.Value.ToString("h:mm:ss tt") + "</br>"
                + "<h3>" + checkout.ItemUPCFK + " is due back at " + checkout.DueDate.Value.ToString("dddd, MMMM dd, yyyy h:mm tt") + ".</h3> Late charges will be issued if the item is not reutrned on time."
                + "This includes a NON-REFUNDABLE fine of $5 per day, up to a maximum  of $25.00. Failure to return " + checkout.ItemUPCFK + " within 6 days, or returning the item without all internal and external components intact,"
                + "will cause your student account to be billed for the cost of " + checkout.ItemUPCFK + "'s replacement plus a non-refundable billing fee of $5.00."
                + "Replacement charges are assessed in addition to the maximum overdue fine. Replacement charges can be upto: Laptops = $1,800, Accessory = $95.00."
                + "If damage occurs to any laptop components or accessories, damage charges will be imposed as appropriate." + "</br> </br>"

                + " -UTRC Management </br> http://utrc.casa.colostate.edu/";

            // now send it
            SendMailHtml(mailMessage, text);
        }
Esempio n. 11
0
        public void OverdueItemEmail(tb_CSUStudent student, tb_CSUCheckoutCheckin checkout, bool isTest = false)
        {
            mailMessage.To.Clear();
            mailMessage.From = new MailAddress("*****@*****.**");
            mailMessage.To.Add(isTest ? SessionVariables.CurrentUser.EMAIL : student.EMAIL_ADDRESS);
            // add subject
            mailMessage.Subject =
                "Notice of OverDue Checkout from UTRC Checkout";
            // add body
            text =
                student.FIRST_NAME + " " + student.LAST_NAME + "," + "</br> </br>" +
                "Our records indicate that you checked out " + checkout.ItemUPCFK + " on " + checkout.CheckoutDate.Value.ToString("M") + " at " + checkout.CheckoutDate.Value.ToString("HH:mm tt") + "</br>"
                + checkout.ItemUPCFK + " was due back at " + checkout.DueDate.Value.ToString("f") + ". Late charges will be issued if the item is not reutrned within 24 hours of checkout time." + "</br>"
                + "</br>This includes a NON-REFUNDABLE fine of $5 per day, upto a maximum  of $25.00. Failure to return the item without all internal and external components intact, will be billed at its replacement charge plus a billing fee of $5.00."
                + "Replacement charges are assessed in addition to the maximum overdue fine. Replacement charges are: Laptops = $1,800, each accessory = $95.00." + "</br>"
                + "</br>If damage occurs to any laptop components or accessories, damage charges will be imposed as appropriate." + "</br>"
                + "To avoid further charges on your student account  please return the item to the  checkout desk." + "</br></br>"
                + " -UTRC Management";

            // now send it

            SendMailHtml(mailMessage, text);
        }
        //[ValidateAntiForgeryToken]
        public ActionResult Create(string csuId, string upc, string upc1, string upc2)
        {
            try
            {
                var view = new ViewModels();
                if (csuId.Length > 9)
                {
                    //Shortens the scanned CSU-ID to 9 characters
                    csuId = csuId.Truncate(9);
                }
                if (view.IsBannedUser(csuId))
                {
                    ViewBag.Message = "That user has been banned from checkout!" + csuId;
                    return(View("Index"));
                }

                // Checks for Student record

                var csuStudent = GetOrMigrateStudent(csuId);

                //Checks for signed Waiver
                if (WaiverCheck(csuStudent) != true)
                {
                    SessionVariables.waiverCSUId = csuId;
                    SessionVariables.waiverUPC   = upc;
                    SessionVariables.waiverUPC1  = upc1;
                    SessionVariables.waiverUPC2  = upc2;
                    ViewBag.Message = "Records indicate this user has not signed a waiver";
                    return(View("Waiver", csuStudent));
                }

                //checks for UPC Entry
                var upcs = new List <string> {
                    upc, upc1, upc2
                };
                upcs = GetValidUpcs(upc, upc1, upc2);

                if (upcs.Count == 0)
                {
                    ViewBag.Message = "No UPC entered, try again " + csuId;
                    return(View("Index"));
                }

                if (upcs.Distinct().Count() != upcs.Count)
                {
                    ViewBag.Message = "There are duplicate UPCs, try again" + csuId;
                    return(View("Index"));
                }

                //Item Check
                var stuFirst       = csuStudent.FIRST_NAME + " " + csuStudent.LAST_NAME;
                var checkoutRecord = new tb_CSUCheckoutCheckin();
                try
                {
                    foreach (var item in upcs)
                    {
                        var itemCheckout = db.tb_CSULabInventoryItems.FirstOrDefault(s => s.ItemUPC == item);
                        var checkedOut   = db.tb_CSUCheckoutCheckin.FirstOrDefault(s => s.ItemUPCFK == item && s.CheckinDate == null);

                        if (itemCheckout == null)
                        {
                            ViewBag.Message = "Item #1 " + item + " number not found";
                            return(View("Index"));
                        }
                        if (checkedOut != null)
                        {
                            ViewBag.Message = "Our Records indicate that item" + item + " is checked-out, please check the item in first! Copy the CSU ID first though so you don't have to ask for the ID back " + csuId;
                            return(View("Index"));
                        }
                        //build record
                        checkoutRecord.CSU_IDFK           = csuId;
                        checkoutRecord.ItemUPCFK          = item;
                        checkoutRecord.ItemIDFK           = itemCheckout.ItemId;
                        checkoutRecord.CheckoutLabTech    = SessionVariables.CurrentUserId;
                        checkoutRecord.CheckoutDate       = DateTime.Now;
                        checkoutRecord.CheckoutLocationFK = itemCheckout.ItemLocationFK;
                        checkoutRecord.DueDate            = SessionVariables.ItemDueDateTime;
                        db.tb_CSUCheckoutCheckin.Add(checkoutRecord);
                        db.SaveChanges();
                        //email student
                        email.CheckoutEmail(csuStudent, checkoutRecord);
                    }
                }
                catch
                {
                    ViewBag.Message = "There was an error during check-out, please try again.";
                    return(View());
                }
                var checkoutView =
                    (from checkInCheckout in db.tb_CSUCheckoutCheckin.Where(s => s.CheckinDate == null && s.isLongterm != true)
                     join csuStudents in db.tb_CSUStudent on checkInCheckout.CSU_IDFK equals csuStudents.CSU_ID
                     select new ViewModels.CkVw()
                {
                    CsuId = checkInCheckout.CSU_IDFK,
                    Ename = csuStudents.ENAME,
                    Name = csuStudents.FIRST_NAME + " " + csuStudents.LAST_NAME,
                    ItemUpc = checkInCheckout.ItemUPCFK,
                    CkOutLabTech = checkInCheckout.CheckoutLabTech,
                    CkOutDt = checkInCheckout.CheckoutDate.Value,
                });

                ViewBag.Message = stuFirst + " " + string.Join(" and ", upcs) + " due back at " + SessionVariables.ItemDueDateTime;
                ModelState.Clear();
                return(View("Index", checkoutView));
            }
            catch
            {
                ViewBag.Message = "There was an error processing the student information, please try again.";
                return(View("Index"));
            }
        }
        public ActionResult LongtermCheckout(string csuId, string upc, string upc1, string upc2, DateTime?duedate, bool isWaitlistCheckout = false)
        {
            try
            {
                var view = new ViewModels();
                if (csuId.Length > 9)
                {
                    //Shortens the scanned CSU-ID to 9 characters
                    csuId = csuId.Truncate(9);
                }
                if (view.IsBannedUser(csuId))
                {
                    ViewBag.Message = "That user has been banned from checkout! Or you got this page in error, try again. " + csuId;
                    return(View("Index"));
                }

                // Checks for Student record
                var csuStudent = GetOrMigrateStudent(csuId);

                //Checks for signed Waiver
                if (WaiverCheck(csuStudent) != true)
                {
                    SessionVariables.waiverCSUId     = csuId;
                    SessionVariables.waiverUPC       = upc;
                    SessionVariables.waiverUPC1      = upc1;
                    SessionVariables.waiverUPC2      = upc2;
                    SessionVariables.isLongterm      = true;
                    SessionVariables.longtermDueDate = duedate;
                    ViewBag.Message = "Records indicate this user has not signed a waiver";
                    return(View("Waiver", csuStudent));
                }

                var upcs = new List <string> {
                    upc, upc1, upc2
                };
                upcs = GetValidUpcs(upc, upc1, upc2);

                //checks for UPC Entry
                if (upcs.Count == 0)
                {
                    ViewBag.Message = "No UPC entered, try again";
                    return(View());
                }

                if (upcs.Distinct().Count() != upcs.Count)
                {
                    if (isWaitlistCheckout)
                    {
                        TempData["Message"] = "There are duplicate UPCs, try again.";
                        return(RedirectToAction("LongtermWaitlist", "tb_LongtermWaitlist"));
                    }
                    ViewBag.Message = "There are duplicate UPCs, try again";
                    return(View());
                }

                // for waitlist checkout, check for: 2 upc's max, 1 waitlist laptop max, waitlist laptop is first if multiple upcs
                // this will ensure that if a laptop checkout ends up being invalid, a charger doesn't get processed prior
                if (isWaitlistCheckout)
                {
                    if (upc2 != null)
                    {
                        // only 2 upc's expected for waitlist checkout, so exit
                        TempData["Message"] = "Error. Only certain laptops and their chargers may be checked out via the waitlist.";
                        return(RedirectToAction("LongtermWaitlist", "tb_LongtermWaitlist"));
                    }
                    // grab item details
                    var itemUpc  = db.tb_CSULabInventoryItems.FirstOrDefault(s => s.ItemUPC == upc);
                    var itemUpc1 = db.tb_CSULabInventoryItems.FirstOrDefault(s => s.ItemUPC == upc1);
                    if (upc1 != null)
                    {
                        if (itemUpc.isWaitlistItem != true && itemUpc1.isWaitlistItem == true)
                        {
                            // swap upc order so waitlist laptop gets processed first
                            upcs = new List <string> {
                                upc1, upc
                            };
                        }
                        else if (itemUpc.isWaitlistItem != true && itemUpc1.isWaitlistItem != true)
                        {
                            // neither item is a waitlist item, so exit
                            TempData["Message"] = "Error. Only certain laptops and their chargers may be checked out via the waitlist.";
                            return(RedirectToAction("LongtermWaitlist", "tb_LongtermWaitlist"));
                        }
                        else if (itemUpc.isWaitlistItem == true && itemUpc1.isWaitlistItem == true)
                        {
                            // both items are waitlist items, so exit
                            TempData["Message"] = "Error. Only one laptop per user may be checked out via the waitlist.";
                            return(RedirectToAction("LongtermWaitlist", "tb_LongtermWaitlist"));
                        }
                    }
                    else if (upc1 == null && itemUpc.isWaitlistItem != true)
                    {
                        TempData["Message"] = "Error. Not a valid waitlist item.";
                        return(RedirectToAction("LongtermWaitlist", "tb_LongtermWaitlist"));
                    }
                }

                // Item Check
                var stuFirst       = csuStudent.FIRST_NAME + " " + csuStudent.LAST_NAME;
                var checkoutRecord = new tb_CSUCheckoutCheckin();
                try
                {
                    foreach (var item in upcs)
                    {
                        var itemCheckout = db.tb_CSULabInventoryItems.FirstOrDefault(s => s.ItemUPC == item);
                        var checkedOut   = db.tb_CSUCheckoutCheckin.FirstOrDefault(s => s.ItemUPCFK == item && s.CheckinDate == null);

                        if (itemCheckout == null)
                        {
                            ViewBag.Message = "Item #1 " + item + " number not found";
                            return(View("Index"));
                        }
                        if (checkedOut != null)
                        {
                            ViewBag.Message = "Our Records indicate that item" + item + " is checked-out, please check the item in first! Copy the CSU ID first though so you don't have to ask for the ID back " + csuId;
                            return(View("Index"));
                        }
                        checkoutRecord.CSU_IDFK           = csuId;
                        checkoutRecord.ItemUPCFK          = item;
                        checkoutRecord.ItemIDFK           = itemCheckout.ItemId;
                        checkoutRecord.CheckoutLabTech    = SessionVariables.CurrentUserId;
                        checkoutRecord.CheckoutDate       = DateTime.Now;
                        checkoutRecord.CheckoutLocationFK = itemCheckout.ItemLocationFK;
                        checkoutRecord.isLongterm         = true;
                        checkoutRecord.DueDate            = duedate;

                        // handle waitlist checkout items
                        if (isWaitlistCheckout)
                        {
                            var waitlistStudent = db.tb_LongtermWaitlist.FirstOrDefault(m => m.CSU_ID == csuId);
                            if (itemCheckout.isWaitlistItem == true) // true if item is a waitlist laptop
                            {
                                var isHP  = false;
                                var isMac = false;
                                if (itemCheckout.ItemUPC.ToLower().Contains("lt-pro"))
                                {
                                    isMac = true;
                                }
                                else if (itemCheckout.ItemUPC.ToLower().Contains("lt-hp"))
                                {
                                    isHP = true;
                                }
                                else // item is neither HP nor Mac, so halt checkout
                                {
                                    TempData["Message"] = "Error. This item is identified as a waitlist item, but does not match any HP or Macbook UPCs.";
                                    return(RedirectToAction("LongtermWaitlist", "tb_LongtermWaitlist"));
                                }


                                if (isHP)
                                {
                                    checkoutRecord.isWaitlistHP = true;
                                }
                                else if (isMac)
                                {
                                    checkoutRecord.isWaitlistMac = true;
                                }
                                itemCheckout.isCheckedOut = true;
                            }
                        }
                        db.tb_CSUCheckoutCheckin.Add(checkoutRecord);
                        db.SaveChanges();
                        email.CheckoutEmail(csuStudent, checkoutRecord);
                    }
                }
                catch
                {
                    ViewBag.Message = "There was an error during check-out, please try again.";
                    return(View());
                }

                ViewBag.Message = stuFirst + ": " + string.Join(" and ", upcs) + " due back on " + duedate.Value.ToString("MM-dd-yyyy") + ".";
                ModelState.Clear();
                if (isWaitlistCheckout)
                {
                    TempData["CheckoutMessage"] = ViewBag.Message;
                    return(RedirectToAction("RemoveFromLongtermWaitlist", "tb_LongtermWaitlist", new { csuId = csuId }));
                }
                return(View("Index"));
            }
            catch
            {
                ViewBag.Message = "There was an error processing the student information, please try again.";
                return(View());
            }
        }