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