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)); }
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)); }
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); }
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); }
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); }
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); }
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; }
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); }
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()); } }