public async Task <ActionResult> ResolveTroubleTicket(int Id) { bool retValue = true; try { using (MTCDbContext db = new MTCDbContext()) { TroubleTicket troubleTicket = db.TroubleTickets.Find(Id); if (troubleTicket != null) { this.AuditTroubleTicket(troubleTicket); troubleTicket.TroubleTicketStatus = TroubleTicketStatus.Resolved; troubleTicket.ModifiedBy = HttpContext.User.Identity.Name; troubleTicket.ModifiedOn = DateTime.Now; await db.SaveChangesAsync(); } this.EmailTicketResolution(troubleTicket, db); } } catch { retValue = false; } return(Json(retValue, JsonRequestBehavior.AllowGet)); }
public async Task <IActionResult> Edit(int id, [Bind("TroubleTicketId,Title,Description,CreationDate,Solved,ApplicationUserId,StudentNumber")] TroubleTicket troubleTicket) { if (id != troubleTicket.TroubleTicketId) { return(NotFound()); } if (ModelState.IsValid) { try { _context.Update(troubleTicket); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!TroubleTicketExists(troubleTicket.TroubleTicketId)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } ViewData["ApplicationUserId"] = new SelectList(_context.ApplicationUsers, "Id", "Id", troubleTicket.ApplicationUserId); return(View(troubleTicket)); }
public async Task <ActionResult> ResolveTroubleTicketAdmin(int Id, DateTime firstShiftTruckMissed, DateTime lastShiftTruckMissed, String contractorNotes, String mtcNotes) { bool retValue = true; try { using (MTCDbContext db = new MTCDbContext()) { TroubleTicket troubleTicket = db.TroubleTickets.Find(Id); if (troubleTicket != null) { this.AuditTroubleTicket(troubleTicket); troubleTicket.FirstShiftTruckMissed = firstShiftTruckMissed; troubleTicket.LastShiftTruckMissed = lastShiftTruckMissed; troubleTicket.ContractorNotes = contractorNotes; troubleTicket.MTCNotes = mtcNotes; troubleTicket.TroubleTicketStatus = TroubleTicketStatus.Resolved; troubleTicket.ModifiedBy = HttpContext.User.Identity.Name; troubleTicket.ModifiedOn = DateTime.Now; await db.SaveChangesAsync(); } this.EmailTicketResolution(troubleTicket, db); } } catch { retValue = false; } return(Json(retValue, JsonRequestBehavior.AllowGet)); }
private void AuditTroubleTicket(TroubleTicket troubleTicket) { using (MTCDbContext db = new MTCDbContext()) { db.TroubleTicketAudits.Add(new TroubleTicketAudit(troubleTicket, DateTime.Now, HttpContext.User.Identity.Name)); db.SaveChanges(); } }
public async Task <ActionResult> Details(int?id) { using (MTCDbContext db = new MTCDbContext()) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } TroubleTicket troubleTicket = await db.TroubleTickets.FindAsync(id); if (troubleTicket == null) { return(HttpNotFound()); } return(View(troubleTicket)); } }
public async Task <ActionResult> SaveTroubleTicketMaintenanceData(int Id, DateTime?TroubleShootingDate, DateTime?FixedDate, DateTime?RemovedAssetDate, DateTime?ShippedAssetDate, DateTime?ReceivedAssetDate, DateTime?InstalledAssetDate, String LATARMANumber, String MaintenanceNotes) { bool retValue = true; try { using (MTCDbContext db = new MTCDbContext()) { TroubleTicket troubleTicket = db.TroubleTickets.Find(Id); if (troubleTicket != null) { this.AuditTroubleTicket(troubleTicket); troubleTicket.TroubleShootingDate = TroubleShootingDate; troubleTicket.FixedDate = FixedDate; troubleTicket.RemovedAssetDate = RemovedAssetDate; troubleTicket.ShippedAssetDate = ShippedAssetDate; troubleTicket.ReceivedAssetDate = ReceivedAssetDate; troubleTicket.InstalledAssetDate = InstalledAssetDate; troubleTicket.LATARMANumber = LATARMANumber; troubleTicket.MaintenanceNotes = MaintenanceNotes; troubleTicket.ModifiedBy = HttpContext.User.Identity.Name; troubleTicket.ModifiedOn = DateTime.Now; await db.SaveChangesAsync(); } } } catch { retValue = false; } return(Json(retValue, JsonRequestBehavior.AllowGet)); }
public async Task <IActionResult> Create([Bind("TroubleTicketId,Title,Description,CreationDate,Solved,ApplicationUserId,StudentNumber")] TroubleTicket troubleTicket) { var student = _context.Students.Where(a => a.StudentNumber.Equals(troubleTicket.StudentNumber)).FirstOrDefault(); if (User.IsInRole("Employee")) { if (student == null) { ViewData["ApplicationUserId"] = _context.ApplicationUsers.Where(a => a.Id == troubleTicket.ApplicationUserId).SingleOrDefault(); ViewData["ErrorMessage"] = "Não existe um estudante com esse número"; return(View(troubleTicket)); } } if (ModelState.IsValid) { if (User.IsInRole("Employee")) { student.IsNotified = true; } if (User.IsInRole("Student")) { var employees = _context.Employees.ToList(); foreach (Employee e in employees) { e.IsNotified = true; } } troubleTicket.Answers = new List <TroubleTicketAnswer>(); _context.Add(troubleTicket); await _context.SaveChangesAsync(); return(RedirectToAction("Details", "TroubleTickets", new { id = troubleTicket.TroubleTicketId })); } ViewData["ErrorMessage"] = ""; ViewData["ApplicationUserId"] = _context.ApplicationUsers.Where(a => a.Id == troubleTicket.ApplicationUserId).SingleOrDefault(); return(View(troubleTicket)); }
public async Task <ActionResult> SaveTroubleTicketReplacementData(int Id, bool ReplacmentIsFixed, DateTime ReplacmentDate, String ReplacementOEMSerialNumber, String ReplacementIPAddress, String ReplacementWiFiSSID, String InVehicleContractorNotes) { bool retValue = true; try { using (MTCDbContext db = new MTCDbContext()) { TroubleTicket troubleTicket = db.TroubleTickets.Find(Id); if (troubleTicket != null) { this.AuditTroubleTicket(troubleTicket); troubleTicket.ReplacmentIsFixed = ReplacmentIsFixed; troubleTicket.ReplacmentDate = ReplacmentDate; troubleTicket.ReplacementOEMSerialNumber = ReplacementOEMSerialNumber; troubleTicket.ReplacementIPAddress = ReplacementIPAddress; troubleTicket.ReplacementWiFiSSID = ReplacementWiFiSSID; troubleTicket.InVehicleContractorNotes = InVehicleContractorNotes; troubleTicket.ModifiedBy = HttpContext.User.Identity.Name; troubleTicket.ModifiedOn = DateTime.Now; await db.SaveChangesAsync(); } } } catch { retValue = false; } return(Json(retValue, JsonRequestBehavior.AllowGet)); }
public static string BuildTroubleTicketEmailBody(TroubleTicket troubleTicket) { StringBuilder sb = new StringBuilder(); try { using (MTCDbContext db = new MTCDbContext()) { sb.Append("<h3>1. The following Trouble Ticket has been entered or edited in LATATrax.</h3>"); sb.Append("<table>"); sb.Append("<tr>"); sb.Append("<td><br/></td>"); sb.Append("</tr>"); sb.Append("<tr>"); sb.Append("<td>Ticket #</td>"); sb.Append("<td>" + troubleTicket.Id + "</td>"); sb.Append("</tr>"); sb.Append("<tr>"); sb.Append("<td>Status</td>"); sb.Append("<td>" + Enum.GetName(typeof(TroubleTicketStatus), troubleTicket.TroubleTicketStatus) + "</td>"); sb.Append("</tr>"); sb.Append("<tr>"); sb.Append("<td>Type</td>"); sb.Append("<td>" + Enum.GetName(typeof(TroubleTicketType), troubleTicket.TroubleTicketType) + "</td>"); sb.Append("</tr>"); sb.Append("<tr>"); sb.Append("<td>Component Issues</td>"); sb.Append("<td>"); var ttCompomentIssues = db.TroubleTicketTroubleTicketComponentIssues.Where(p => p.TroubleTicketId == troubleTicket.Id); foreach (var ttCompomentIssue in ttCompomentIssues) { sb.Append("<div>" + ttCompomentIssue.TroubleTicketComponentIssue.Issue + "</div"); } sb.Append("</td>"); sb.Append("</tr>"); sb.Append("<tr>"); sb.Append("<td><br/></td>"); sb.Append("</tr>"); using (MTCDBEntities de = new MTCDBEntities()) { sb.Append("<tr>"); sb.Append("<td>Tow Contractor:</td>"); sb.Append("<td>" + de.Contractors.FirstOrDefault(p => p.ContractorID == troubleTicket.AssociatedTowContractorId).ContractCompanyName + "</td>"); sb.Append("</tr>"); if (troubleTicket.AssociatedInVehicleContractorId != null) { sb.Append("<tr>"); sb.Append("<td>In-Vehicle Equipmemt General Contractor:</td>"); sb.Append("<td>" + de.Contractors.FirstOrDefault(p => p.ContractorID == troubleTicket.AssociatedInVehicleContractorId).ContractCompanyName + "</td>"); sb.Append("</tr>"); } if (troubleTicket.AssociatedInVehicleLATATraxContractorId != null) { sb.Append("<tr>"); sb.Append("<td>In-Vehicle Equipment LATATrax Contractor:</td>"); sb.Append("<td>" + de.Contractors.FirstOrDefault(p => p.ContractorID == troubleTicket.AssociatedInVehicleLATATraxContractorId).ContractCompanyName + "</td>"); sb.Append("</tr>"); } } sb.Append("<tr>"); sb.Append("<td>Problem Started On:</td>"); sb.Append("<td>" + troubleTicket.ProblemStartedOn + "</td>"); sb.Append("</tr>"); sb.Append("<tr>"); sb.Append("<td><br/></td>"); sb.Append("</tr>"); sb.Append("<tr>"); sb.Append("<td>MTC Notes:</td>"); sb.Append("<td>" + troubleTicket.MTCNotes + "</td>"); sb.Append("</tr>"); sb.Append("<tr>"); sb.Append("<td>Tow-Contractor Notes:</td>"); sb.Append("<td>" + troubleTicket.ContractorNotes + "</td>"); sb.Append("</tr>"); sb.Append("<tr>"); sb.Append("<td>In-Vehicle Contractor Notes:</td>"); sb.Append("<td>" + troubleTicket.InVehicleContractorNotes + "</td>"); sb.Append("</tr>"); sb.Append("<tr>"); sb.Append("<td>LATA Notes:</td>"); sb.Append("<td>" + troubleTicket.LATANotes + "</td>"); sb.Append("</tr>"); sb.Append("<tr>"); sb.Append("<td><br/></td>"); sb.Append("</tr>"); sb.Append("<tr>"); sb.Append("<td><br/></td>"); sb.Append("</tr>"); sb.Append("<tr>"); sb.Append("<td>Troule Ticket Details:</td>"); sb.Append("<td><a href='" + GetWebUri() + "/TroubleTickets/Details?id=" + troubleTicket.Id + "' target='_blank'>View Details</a></td>"); sb.Append("</tr>"); sb.Append("</table>"); } sb.Append(EmailFooter()); } catch { } return(sb.ToString()); }
private void EmailTicketResolution(TroubleTicket troubleTicket, MTCDbContext db) { using (MTCDBEntities dc = new MTCDBEntities()) { List <MTCEmailRecipient> ccRecipients = new List <MTCEmailRecipient>(); List <MTCEmailRecipient> toRecipients = new List <MTCEmailRecipient>(); if (troubleTicket.AssociatedTowContractorId != null) { var towContractor = dc.Contractors.FirstOrDefault(p => p.ContractorID == troubleTicket.AssociatedTowContractorId); if (towContractor != null) { ccRecipients.Add(new MTCEmailRecipient { Email = towContractor.Email, Name = towContractor.ContractCompanyName }); } } if (troubleTicket.AssociatedInVehicleContractorId != null) { var inVehicleContractor = dc.Contractors.FirstOrDefault(p => p.ContractorID == troubleTicket.AssociatedInVehicleContractorId); if (inVehicleContractor != null) { ccRecipients.Add(new MTCEmailRecipient { Email = inVehicleContractor.Email, Name = inVehicleContractor.ContractCompanyName }); } } if (troubleTicket.AssociatedInVehicleLATATraxContractorId != null) { var inVehicleLATATraxContractor = dc.Contractors.FirstOrDefault(p => p.ContractorID == troubleTicket.AssociatedInVehicleLATATraxContractorId); if (inVehicleLATATraxContractor != null) { ccRecipients.Add(new MTCEmailRecipient { Email = inVehicleLATATraxContractor.Email, Name = inVehicleLATATraxContractor.ContractCompanyName }); } } toRecipients.Add(new MTCEmailRecipient { Email = Utilities.GetApplicationSettingValue("MTCContactEmail"), Name = Utilities.GetApplicationSettingValue("MTCContactName") }); if (ccRecipients.Any()) { var body = EmailManager.BuildTroubleTicketEmailBody(troubleTicket); EmailManager.SendEmail(toRecipients, "Resolved Trouble Ticket [" + troubleTicket.Id.ToString().PadLeft(8, "0"[0]) + "]", body, ccRecipients); } } }
public async Task <ActionResult> SaveTroubleTicket(TroubleTicketViewModel model) { bool retValue = true; TroubleTicket troubleTicket = null; try { using (MTCDbContext db = new MTCDbContext()) { if (model.Id == 0) { troubleTicket = new TroubleTicket(); troubleTicket.CreatedBy = HttpContext.User.Identity.Name; troubleTicket.CreatedOn = DateTime.Now; troubleTicket.TroubleTicketStatus = TroubleTicketStatus.Unresolved; } else { troubleTicket = db.TroubleTickets.Find(model.Id); this.AuditTroubleTicket(troubleTicket); } troubleTicket.BackupRequestSubmitted = model.BackupRequestSubmitted; troubleTicket.AssociatedTowContractorId = model.AssociatedTowContractorId; troubleTicket.AssociatedInVehicleContractorId = model.AssociatedInVehicleContractorId; troubleTicket.AssociatedInVehicleLATATraxContractorId = model.AssociatedInVehicleLATATraxContractorId; troubleTicket.DateTruckBackInService = model.DateTruckBackInService; troubleTicket.DateTruckOutOfService = model.DateTruckOutOfService; troubleTicket.MTCNotes = model.MTCNotes; troubleTicket.ContractorNotes = model.ContractorNotes; troubleTicket.InVehicleContractorNotes = model.InVehicleContractorNotes; troubleTicket.LATANotes = model.LATANotes; troubleTicket.ReliaGateOEMSerialNumber = model.ReliaGateOEMSerialNumber; #region if (model.TroubleTicketProblemIds != null) { db.TroubleTicketTroubleTicketProblems.RemoveRange(db.TroubleTicketTroubleTicketProblems.Where(p => p.TroubleTicketId == troubleTicket.Id)); foreach (var TroubleTicketProblemId in model.TroubleTicketProblemIds) { db.TroubleTicketTroubleTicketProblems.Add(new TroubleTicketTroubleTicketProblem { TroubleTicketProblemId = TroubleTicketProblemId, TroubleTicketId = troubleTicket.Id }); } } if (model.TroubleTicketComponentIssueIds != null) { db.TroubleTicketTroubleTicketComponentIssues.RemoveRange(db.TroubleTicketTroubleTicketComponentIssues.Where(p => p.TroubleTicketId == troubleTicket.Id)); foreach (var TroubleTicketComponentIssueId in model.TroubleTicketComponentIssueIds) { db.TroubleTicketTroubleTicketComponentIssues.Add(new TroubleTicketTroubleTicketComponentIssue { TroubleTicketComponentIssueId = TroubleTicketComponentIssueId, TroubleTicketId = troubleTicket.Id }); } } if (model.TroubleTicketLATATraxIssueIds != null) { db.TroubleTicketTroubleTicketLATATraxIssues.RemoveRange(db.TroubleTicketTroubleTicketLATATraxIssues.Where(p => p.TroubleTicketId == troubleTicket.Id)); foreach (var TroubleTicketLATATraxIssueId in model.TroubleTicketLATATraxIssueIds) { db.TroubleTicketTroubleTicketLATATraxIssues.Add(new TroubleTicketTroubleTicketLATATraxIssue { TroubleTicketLATATraxIssueId = TroubleTicketLATATraxIssueId, TroubleTicketId = troubleTicket.Id }); } } if (model.TroubleTicketDriverIds != null) { db.TroubleTicketAffectedDrivers.RemoveRange(db.TroubleTicketAffectedDrivers.Where(p => p.TroubleTicketId == troubleTicket.Id)); foreach (var TroubleTicketDriverId in model.TroubleTicketDriverIds) { db.TroubleTicketAffectedDrivers.Add(new TroubleTicketAffectedDriver { DriverId = TroubleTicketDriverId, TroubleTicketId = troubleTicket.Id }); } } #endregion troubleTicket.ContactName = model.ContactName; troubleTicket.ContactPhone = model.ContactPhone; troubleTicket.ProblemStartedOn = model.ProblemStartedOn; troubleTicket.ShiftsMissed = model.ShiftsMissed; troubleTicket.TroubleTicketStatus = model.TroubleTicketStatus; troubleTicket.TroubleTicketType = model.TroubleTicketType; troubleTicket.VehicleId = model.VehicleId; troubleTicket.ModifiedBy = HttpContext.User.Identity.Name; troubleTicket.ModifiedOn = DateTime.Now; if (model.Id == 0) { db.TroubleTickets.Add(troubleTicket); } await db.SaveChangesAsync(); using (MTCDBEntities dc = new MTCDBEntities()) { List <MTCEmailRecipient> ccRecipients = new List <MTCEmailRecipient>(); List <MTCEmailRecipient> toRecipients = new List <MTCEmailRecipient>(); #region if (troubleTicket.AssociatedTowContractorId != null) { var towContractor = dc.Contractors.FirstOrDefault(p => p.ContractorID == troubleTicket.AssociatedTowContractorId); if (towContractor != null) { toRecipients.Add(new MTCEmailRecipient { Email = towContractor.Email, Name = towContractor.ContractCompanyName }); } } if (troubleTicket.AssociatedInVehicleContractorId != null) { var inVehicleCon = dc.Contractors.FirstOrDefault(p => p.ContractorID == troubleTicket.AssociatedInVehicleContractorId); if (inVehicleCon != null) { toRecipients.Add(new MTCEmailRecipient { Email = inVehicleCon.Email, Name = inVehicleCon.ContractCompanyName }); } } if (troubleTicket.AssociatedInVehicleLATATraxContractorId != null) { var inVehicleLATATraxCon = dc.Contractors.FirstOrDefault(p => p.ContractorID == troubleTicket.AssociatedInVehicleLATATraxContractorId); if (inVehicleLATATraxCon != null) { toRecipients.Add(new MTCEmailRecipient { Email = inVehicleLATATraxCon.Email, Name = inVehicleLATATraxCon.ContractCompanyName }); } } #endregion ccRecipients.Add(new MTCEmailRecipient { Email = Utilities.GetApplicationSettingValue("MTCContactEmail"), Name = Utilities.GetApplicationSettingValue("MTCContactName") }); if (toRecipients.Any()) { var body = EmailManager.BuildTroubleTicketEmailBody(troubleTicket); var subject = "Trouble Ticket [" + troubleTicket.Id.ToString().PadLeft(8, "0"[0]) + "]"; if (troubleTicket.VehicleId != Guid.Empty) { using (MTCDBEntities dbBase = new MTCDBEntities()) { var vehicle = dbBase.FleetVehicles.FirstOrDefault(p => p.FleetVehicleID == troubleTicket.VehicleId); if (vehicle != null) { subject += " for Truck " + vehicle.VehicleNumber; } } } EmailManager.SendEmail(toRecipients, subject, body, ccRecipients); } } } } catch { retValue = false; } return(Json(retValue, JsonRequestBehavior.AllowGet)); }