public ActionResult Create(TicketCreateModel model) { var contactId = this.GetContactId(); using (var dc = new IORunEntities()) { var contact = dc.Contacts.Single(c => c.Contact_GUID == contactId); var company = dc.Kunders.Single(k => k.Kunde_GUID == contact.Contact_CompanyGUID); var systemArbejdeTaskLog = TaskTypeRepository.GetHelpdeskTaskType(dc); var invoiceType = KundeRepository.FindStandardFakturaType(company); var helpdeskUser = TaskRepository.GetHelpdeskUser(dc); var newTask = TaskRepository.CreateTask( company.Kunde_GUID, contactId, model.Overskrift, model.Beskrivelse, dc, invoiceType, systemArbejdeTaskLog, helpdeskUser.Bruger_GUID, contactId); newTask.Task_WebCreated = 1; newTask.Task_WebVisible = 1; dc.Tasks.Add(newTask); dc.SaveChanges(); // Laver ged i rapportering //var newTaskLog = TaskRepository.CreateTaskLog(newTask.Task_GUID, dc, null, contactId); //newTaskLog.TaskLog_WebVisible = 1; //newTaskLog.TaskLog_InternalText = model.Beskrivelse; //newTaskLog.TaskLog_ExternalText = model.Beskrivelse; //dc.TaskLogs.Add(newTaskLog); var newMail = MailRepository.CreateTicketOprettetMail(contact, model.Overskrift, newTask.Task_IssueIdentifier, Properties.Settings.Default.SiteRootUrl); dc.EmailQueues.Add(newMail); dc.SaveChanges(); return RedirectToAction("Edit", new { id = newTask.Task_IssueIdentifier }); } }
public void Execute(IJobExecutionContext context) { log.Info("Kører check new tasklogs job"); try { var service = SendEmailJob.GetExchangeService( Properties.Settings.Default.SupportEmailAddress, Properties.Settings.Default.SupportEmailUsername, Properties.Settings.Default.SupportEmailPassword, ExchangeVersion.Exchange2010, _serviceUri); _serviceUri = service.Url; using (var dc = new IORunEntities()) { var synligeTasksOprettetEllerOpdateretIdag = dc.Tasks.Where(tl => ( tl.Task_NewestTasklogDate.HasValue && tl.Task_NewestTasklogDate >= DateTime.Today ) && tl.IsThrash == 0 && tl.Task_WebVisible == 1).ToList(); log.Info($"Checker for nye urapporterede tasklogs på {synligeTasksOprettetEllerOpdateretIdag.Count} tasks"); foreach (var thisTask in synligeTasksOprettetEllerOpdateretIdag) { try { CheckTask(thisTask, dc); } catch (Exception checkTaskExcepException) { log.Error("Check task failed", checkTaskExcepException); } } dc.SaveChanges(); } } catch (Exception e) { log.Error(e); } log.Info("Færdig med check for tasklogs job"); }
public ActionResult Index(ProfileEditModel model) { var contactId = this.GetContactId(); var valid = true; ModelState.Clear(); using (var dc = new IORunEntities()) { var contact = dc.Contacts.Single(c => c.Contact_GUID == contactId); contact.Contact_Work_EMail = model.EmailAdresse; contact.Contact_Work_MobileNumber = model.Mobile; if (string.IsNullOrEmpty(model.Kodeord) == false) { if (string.Equals(model.Kodeord, model.NytKodeordBekraeft)) { contact.Contact_PWD = model.Kodeord; model.ErrorMessage = "Passwordet er ændret"; model.Kodeord = ""; model.NytKodeordBekraeft = ""; } else { model.ErrorMessage = "De to passwords skal være ens"; valid = true; } } else { model.ErrorMessage = "Ændringer gemt"; } if (valid) { dc.SaveChanges(); } return View(model); } }
public void Execute(IJobExecutionContext context) { log.Info("Kører check support inbox job"); try { var service = SendEmailJob.GetExchangeService( Properties.Settings.Default.SupportEmailAddress, Properties.Settings.Default.SupportEmailUsername, Properties.Settings.Default.SupportEmailPassword, ExchangeVersion.Exchange2010, _serviceUri); _serviceUri = service.Url; var inboxFolder = new FolderId(WellKnownFolderName.Inbox, new Mailbox(Properties.Settings.Default.SupportEmailAddress)); var mailIds = GetMailIdsToProcess(service, inboxFolder); if (mailIds.Any()) { using (var dc = new IORunEntities()) { log.Info($"Checker {mailIds.Count} mails"); foreach (var mailInfo in mailIds) { if (_alreadySpottedEmails.Contains(mailInfo.ItemId) == false) { var spottedSupportEmail = dc.SupportEmailReceives.SingleOrDefault(er => er.ExchangeItemId == mailInfo.ItemId); if (spottedSupportEmail == null) { var propertySet = new PropertySet( BasePropertySet.IdOnly, ItemSchema.Subject, EmailMessageSchema.From, ItemSchema.Body, ItemSchema.DateTimeReceived); propertySet.RequestedBodyType = BodyType.Text; var exchangeMail = Microsoft.Exchange.WebServices.Data.EmailMessage.Bind( service, new ItemId(mailInfo.ItemId), propertySet); ProcessReceivedSupportEmail(dc, exchangeMail); dc.SupportEmailReceives.Add(new SupportEmailReceive() { ExchangeItemId = mailInfo.ItemId, Subject = mailInfo.Subject, SpottedAt = DateTime.Now }); _alreadySpottedEmails.Add(mailInfo.ItemId); log.Info($"Modtaget support email '{mailInfo.Subject}'"); } else { _alreadySpottedEmails.Add(mailInfo.ItemId); } } } dc.SaveChanges(); } } } catch (Exception e) { log.Error(e); } log.Info("Færdig med inbox check job"); }
private void ProcessReceivedSupportEmail(IORunEntities dc, EmailMessage exchangeMail) { log.Info($"Processerer {exchangeMail.Subject}"); var senderEmail = exchangeMail.From.Address; if (senderEmail.Contains("@")) { var contactsWithMatchingEmail = FindContactWithMatchingEmail(dc, senderEmail); if (contactsWithMatchingEmail.Count == 1) { var contact = contactsWithMatchingEmail.Single(); var company = dc.Kunders.Single(k => k.Kunde_GUID == contact.Contact_CompanyGUID.Value); var ticketNumber = FindTicketNumber(exchangeMail); if (ticketNumber > 0) { log.Info($"Ticket nummer fundet: {ticketNumber}"); var ticketTask = dc.Tasks.SingleOrDefault(t => t.Task_IssueIdentifier == ticketNumber); if (ticketTask != null) { if (ticketTask.Task_CompanyGUID == contact.Contact_CompanyGUID.Value) { LogSupport(dc, ticketTask, contact, exchangeMail, ticketNumber); } else { log.Warn($"Ticket tilhører ikke kontakt persons kunde: {ticketNumber}"); } } else { log.Warn($"Ingen task med ticket nummer fundet: {ticketNumber}"); } } else { var systemArbejdeTaskType = TaskTypeRepository.GetHelpdeskTaskType(dc); var invoiceType = KundeRepository.FindStandardFakturaType(company); var helpdeskUser = TaskRepository.GetHelpdeskUser(dc); var nyTicketTask = TaskRepository.CreateTask( contact.Contact_CompanyGUID.Value, contact.Contact_GUID, exchangeMail.Subject, exchangeMail.Body.Text, dc, invoiceType, systemArbejdeTaskType, helpdeskUser.Bruger_GUID, contact.Contact_GUID); nyTicketTask.Task_WebVisible = 1; nyTicketTask.Task_WebCreated = 1; nyTicketTask.Task_Description = exchangeMail.Body.Text.Truncate(512); dc.Tasks.Add(nyTicketTask); dc.SaveChanges(); ticketNumber = nyTicketTask.Task_IssueIdentifier; var newTaskLog= LogSupport(dc, nyTicketTask, contact, exchangeMail, ticketNumber); var newMailForTicketCreated = MailRepository.CreateTicketOprettetMail(contact, exchangeMail.Subject, ticketNumber, Properties.Settings.Default.SiteRootUrl); dc.EmailQueues.Add(newMailForTicketCreated); dc.SaveChanges(); // Registrer at der allerede er sendt en ticket oprettet mail, ellers // kommer der både oprettet og opdateret mails dc.TasklogChangeReporteds.Add(new TasklogChangeReported() { TaskId = nyTicketTask.Task_GUID, NewestChange = DateTime.Now.AddMinutes(5), TasklogId = newTaskLog.TaskLog_GUID}); log.Info($"Ny ticket oprettet med nummer {nyTicketTask.Task_IssueIdentifier}"); } } else { log.InfoFormat($"Ukendt email adresse, eller flere muligheder: {senderEmail} Count: {contactsWithMatchingEmail.Count}"); } } else { log.InfoFormat($"Ikke en email adresse: {senderEmail}"); } }
public void Execute(IJobExecutionContext context) { log.Info("Kører send emails job"); try { var service = GetExchangeService( Properties.Settings.Default.SupportEmailAddress, Properties.Settings.Default.SupportEmailUsername, Properties.Settings.Default.SupportEmailPassword, ExchangeVersion.Exchange2010, _serviceUri); _serviceUri = service.Url; using (var dc = new IORunEntities()) { var emailsToSend = dc.EmailQueues.Where(eq => eq.SendFailed == false); log.Info($"Fandt {emailsToSend.Count()} emails der skal sendes"); foreach (var thisEmailToSend in emailsToSend) { try { SendMail(service, new MailWrapper() { BodyText = thisEmailToSend.BodyText, FromDisplayName = thisEmailToSend.FromName, FromEmail = thisEmailToSend.FromEmailAddress, Subject = thisEmailToSend.Subject, ToDisplayName = thisEmailToSend.ToName, ToEmail = thisEmailToSend.ToEmailAddress }); dc.EmailQueues.Remove(thisEmailToSend); } catch (Exception e) { thisEmailToSend.SendFailed = true; thisEmailToSend.SendAttempted = DateTime.Now; thisEmailToSend.SendError = e.ToString(); } } dc.SaveChanges(); } } catch (Exception e) { log.Error(e); } log.Info("Færdig med send emails job"); }
public ActionResult Edit(TicketEditModel model) { var contactId = this.GetContactId(); using (var dc = new IORunEntities()) { var contact = dc.Contacts.Single(c => c.Contact_GUID == contactId); var task = dc.Tasks.Single(t => t.Task_GUID == model.TaskId); if (task.Task_CompanyGUID != contact.Contact_CompanyGUID) throw new SecurityException("Unauthorized"); var newTaskLog = TaskRepository.CreateTaskLog(task.Task_GUID, dc, null, contactId); newTaskLog.TaskLog_WebVisible = 1; newTaskLog.TaskLog_InternalText = model.NewMessage; newTaskLog.TaskLog_ExternalText = model.NewMessage; dc.TaskLogs.Add(newTaskLog); task.Task_UpdatedByContactGUID = contactId; task.Task_UpdatedByContactDate = DateTime.Now; dc.SaveChanges(); var newModel = BuildEditModel(task.Task_IssueIdentifier); return View(newModel); } }