Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 3
0
        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));
        }
Ejemplo n.º 4
0
 private void AuditTroubleTicket(TroubleTicket troubleTicket)
 {
     using (MTCDbContext db = new MTCDbContext())
     {
         db.TroubleTicketAudits.Add(new TroubleTicketAudit(troubleTicket, DateTime.Now, HttpContext.User.Identity.Name));
         db.SaveChanges();
     }
 }
Ejemplo n.º 5
0
        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));
            }
        }
Ejemplo n.º 6
0
        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));
        }
Ejemplo n.º 7
0
        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));
        }
Ejemplo n.º 8
0
        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));
        }
Ejemplo n.º 9
0
        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());
        }
Ejemplo n.º 10
0
        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);
                }
            }
        }
Ejemplo n.º 11
0
        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));
        }