public ActionResult Edit(TicketViewModel ticketViewModel) { CS_Ticket ticketObj = new CS_Ticket(); CS_Log logObj = new CS_Log(); CS_EmailLink linkObj = new CS_EmailLink(); int statusId = _dbContext.CS_Ticket.Where(s => s.TicketId == ticketViewModel.TicketId).Select(a => a.StatusId).Single(); int slaId = _dbContext.CS_Ticket.Where(s => s.TicketId == ticketViewModel.TicketId).Select(a => a.SLAId).Single(); int employId = _dbContext.CS_Ticket.Where(s => s.TicketId == ticketViewModel.TicketId).Select(a => a.EmployeeId).Single(); string ticketNumber = _dbContext.CS_Ticket.Where(t => t.TicketId == ticketViewModel.TicketId).Select(a => a.TicketNumber).Single(); string priority = _dbContext.CS_SLA.Where(p => p.SLAId == ticketViewModel.IDSLA).Select(a => a.PriorityName).Single(); string status = _dbContext.CS_Status.Where(s => s.StatusId == ticketViewModel.StatusId).Select(a => a.Status).Single(); if (ticketViewModel.ForwardTo != null) { if (ticketViewModel.ProjectId != 1) { linkObj.TicketId = ticketViewModel.TicketId; linkObj.Link = Utility.GenerateLink(linkObj.TicketId); if ((_dbContext.CS_EmailLink.Where(p => p.TicketId == linkObj.TicketId).Count()) == 1) { _objLink.Update(linkObj); string employeeBody = EmailContent.EmployeeBody(linkObj.Link); string employeeEmail = _dbContext.Employee.Where(e => e.Id == ticketViewModel.ForwardTo).Select(a => a.Email_Official).SingleOrDefault(); Thread NotifyEmployee = new Thread(() => SendMail.SendAcknowledgement(employeeEmail, EmailContent.EmployeeSubject, employeeBody, ticketNumber, priority, status)); NotifyEmployee.Start(); } } } if (statusId != ticketViewModel.StatusId || slaId != ticketViewModel.IDSLA) { //if (ticketViewModel.StatusId == 6) //{ // linkObj.TicketId = _dbContext.CS_EmailLink.Where(t => t.TicketId == ticketViewModel.TicketId).Select(a => a.TicketId).Single(); // _objLink.DeleteById(linkObj.TicketId); //} string emailFrom = _dbContext.Customer.Where(e => e.Id == ticketViewModel.CustomerId).Select(a => a.Email).Single(); Thread AcknowledgeCustomer = new Thread(() => SendMail.SendAcknowledgement(emailFrom, EmailContent.CustomerSubject, EmailContent.CustomerBody, ticketNumber, priority, status)); AcknowledgeCustomer.Start(); } // Find priority level from SLAId Int16 prioritylevel = 0; foreach (var item in _objSLA.GetAll()) { if (item.SLAId == ticketViewModel.IDSLA) { prioritylevel = item.PriorityLevel; break; } } // Create ticket object with edited value for update ticketObj.TicketId = ticketViewModel.TicketId; ticketObj.Title = ticketViewModel.Title; ticketObj.CreatedOn = ticketViewModel.CreatedOn; ticketObj.PriorityLevel = Convert.ToByte(prioritylevel); ticketObj.Description = _dbContext.CS_Ticket.Where(x => x.TicketId == ticketViewModel.TicketId).Select(d => d.Description).SingleOrDefault(); ticketObj.CustomerId = ticketViewModel.CustomerId; ticketObj.EmployeeId = GetEmployeeId(); ticketObj.ForwardToEmployee = ticketViewModel.ForwardTo; ticketObj.SLAId = ticketViewModel.IDSLA; ticketObj.StatusId = ticketViewModel.StatusId; ticketObj.ProjectId = ticketViewModel.ProjectId; ticketObj.TicketNumber = ticketViewModel.TicketNumber; ticketObj.LastComment = ticketViewModel.Comment; // New object for log table to insert entry logObj.Title = ticketViewModel.Title; logObj.Comment = ticketViewModel.Comment; logObj.CreatedOn = DateTime.Now; logObj.ForwardToEmployee = ticketViewModel.ForwardTo; logObj.EmployeeId = GetEmployeeId(); logObj.StatusId = ticketViewModel.StatusId; logObj.TicketId = ticketViewModel.TicketId; logObj.CustumerId = ticketViewModel.CustomerId; logObj.PriorityName = FindPriorityBySLAId(ticketViewModel.IDSLA); // Methods call update ticket table _objTicket.Update(ticketObj); // Method call to insert in log table _objLog.Insert(logObj); return(RedirectToAction(ActionName.TicketIndex)); }
public ActionResult Generate(TicketViewModel ticketViewModel) { CS_Ticket ticketObj = new CS_Ticket(); CS_Log logObj = new CS_Log(); CS_EmailLink linkObj = new CS_EmailLink(); ticketObj.CreatedOn = DateTime.Now; ticketObj.EmployeeId = GetEmployeeId(); ticketObj.Description = ticketViewModel.Description; ticketObj.CustomerId = ticketViewModel.CustomerId; ticketObj.SLAId = ticketViewModel.IDSLA; ticketObj.Title = ticketViewModel.Title; ticketObj.ProjectId = ticketViewModel.ProjectId; ticketObj.StatusId = 1; ticketObj.LastComment = ""; _objTicket.Insert(ticketObj); // To add entry in Log table int ticketid = _dbContext.CS_Ticket.Max(item => item.TicketId); logObj.TicketId = ticketid; logObj.Title = ticketViewModel.Title; logObj.Comment = "Ticket Created"; logObj.CreatedOn = ticketObj.CreatedOn; logObj.EmployeeId = ticketObj.EmployeeId; logObj.CustumerId = ticketObj.CustomerId; logObj.StatusId = 1; logObj.PriorityName = FindPriorityBySLAId(ticketObj.SLAId); _objLog.Insert(logObj); string ReadUrl = ReadURL(); bool result = (ReadUrl.All(Char.IsDigit) && ReadUrl.Length > 0); // Update Ticket generated In calllog table if (result == true) { int callLogid = Convert.ToInt32(ReadUrl); //// CS_CallLog callObj = new CS_CallLog(); //var row = (from u in _dbContext.CS_CallLog // where u.CallLogId == callLogid // select u); //foreach (var entity in row) //{ // callObj = entity; // callObj.IsTicketGenerated = true; //} CS_CallLog callObj = _objCallLog.FindById(callLogid); callObj.IsTicketGenerated = true; callObj.TicketId = ticketObj.TicketId; _objCallLog.Update(callObj); } //Fetch customer email id string emailFrom = _dbContext.Customer.Where(e => e.Id == ticketObj.CustomerId).Select(a => a.Email).SingleOrDefault(); //Fetch status name string status = _dbContext.CS_Status.Where(s => s.StatusId == ticketObj.StatusId).Select(a => a.Status).SingleOrDefault(); //Fetch priority name string priority = _dbContext.CS_SLA.Where(p => p.SLAId == ticketObj.SLAId).Select(a => a.PriorityName).SingleOrDefault(); //Fetch ticket number string ticketNumber = _dbContext.CS_Ticket.Where(t => t.TicketId == ticketObj.TicketId).Select(a => a.TicketNumber).SingleOrDefault(); //Fectch employee email string employeeEmail = _dbContext.Employee.Where(e => e.Id == ticketObj.EmployeeId).Select(a => a.Email_Official).SingleOrDefault(); linkObj.TicketId = ticketObj.TicketId; linkObj.Link = Utility.GenerateLink(linkObj.TicketId); _objLink.Insert(linkObj); string employeeBody = EmailContent.EmployeeBody(linkObj.Link); Thread AcknowledgeCustomer = new Thread(() => SendMail.SendAcknowledgement(emailFrom, EmailContent.CustomerSubject, EmailContent.CustomerBody, ticketNumber, priority, status)); Thread NotifyEmployee = new Thread(() => SendMail.SendAcknowledgement(employeeEmail, EmailContent.EmployeeSubject, employeeBody, ticketNumber, priority, status)); AcknowledgeCustomer.Start(); NotifyEmployee.Start(); return(RedirectToAction(ActionName.TicketIndex, ControllerName.Ticket)); }