Exemplo n.º 1
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);
                }
            }
        }
Exemplo n.º 2
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));
        }