/// <summary> /// Метод для получения экземпляра одного из классов для отправки сообщений в зависимости от подписки. /// </summary> /// <param name="subscription">Подписка, тип которой определяет класс для отправки. Кроме этого, из подписки берется клиент.</param> /// <returns>Экземпляр класса для отправки сообщений.</returns> private static IMessageSender GetMessageSender(Subscription subscription, ILogger logger) { IMessageSender result; switch (subscription.TransportType) { case TransportType.HTTP: result = new HttpMessageSender(subscription.Client, logger); break; case TransportType.MAIL: result = new MailMessageSender(subscription.Client, logger); break; case TransportType.WCF: result = new WcfMessageSender(subscription.Client, logger); break; case TransportType.WEB: result = new WebMessageSender(subscription.Client, logger); break; default: throw new ArgumentException("Неизвестный способ отправки сообщения."); } return(result); }
public IActionResult PushUpdateTaskToDB(long taskid, string taskName, long employeeId, long priorityId, long statusId, string comment) { TaskModel task = TaskDAO.SelectFirst(new Dictionary <string, object>() { { TaskDAO.Columns.IdTask, taskid } }); task.Title = taskName; if (statusId != 0) { task.StatusId = statusId; } task.EmployeeId = employeeId; task.PriorityId = priorityId; task.Comment = comment; EmployeeModel model = EmployeeController.EmployeeDAO.SelectFirst(new Dictionary <string, object>() { { "IdEmployee", employeeId } }); TaskDAO.Update(taskid, task); TaskModel fullTask = task; List <TaskModel> fullTasks = TaskDAO.Select(TaskDAO.Columns.Fill(task, true)); if (fullTasks.Count > 0) { fullTask = fullTasks[0]; } MailMessageSender.SendMessage(model.Email, model.Name + " " + model.SurName, "Edytowano Twoje zadanie", fullTask, MailTypes.editTask); return(RedirectToAction("MainPage", "Home")); }
public IActionResult PushEditMeetingToDB(long id, long meetingTypeId, DateTime dateStart, DateTime?dateEnd, TimeSpan hourStart, TimeSpan?hourEnd, long?roomId, string location, string note, long priorityId, string title, string oldIdMembers, string newIdMembers) { string[] newMembers = new string[0]; if (newIdMembers != null) { newMembers = newIdMembers.Split(","); } List <EmployeeModel> all = EmployeeController.GetAllEmployees(); List <EmployeeModel> members = new List <EmployeeModel>(); foreach (EmployeeModel employee in all) { bool newMemberCheck = false; foreach (string newM in newMembers) { if (newM != "") { if (employee.Id == long.Parse(newM)) { newMemberCheck = true; } } } if (newMemberCheck == true) { //zostawia members.Add(employee); } } MeetingModel model = new MeetingModel(id, meetingTypeId, dateStart, dateEnd, hourStart, hourEnd, HomeController.ActualUser.Id, roomId, location, note, priorityId, title, members); if (model.Location == null) { model.Location = ""; } if (model.RoomId == null) { model.RoomId = null; model.RoomName = ""; } MeetingDAO.Update((int)id, model); List <MeetingModel> fullMeetingModel = MeetingDAO.Select(MeetingDAO.Columns.Fill(model, true)); foreach (EmployeeModel employee in fullMeetingModel[fullMeetingModel.Count - 1].Members) { // if (employee.Confirmation != false) MailMessageSender.SendMessage(employee.Email, employee.Name + " " + employee.SurName, "Edytowano Twoje spotkanie", fullMeetingModel[fullMeetingModel.Count - 1], MailTypes.editMeeting); } return(RedirectToAction("MainPage", "Home")); }
private void SendMail(string service) { string machineName = System.Net.Dns.GetHostName(); string msg = $"The Service {service} on this machine ({machineName}) has stopped" + $" and an attepmt to restart it has failed." + $"" + $"Action is needed !!!"; string subject = $"Monitored Service \"{service}\" has stopped "; MailMessageSender.SendMessage(msg, subject, configuration); }
static void Main(string[] args) { IMessageSender sender = new SmsMessageSender(); Message message = new ShortMessage(sender); message.SendMessage("Hello Friends"); IMessageSender sender2 = new MailMessageSender(); Message message2 = new LongMessage(sender); message.SendMessage("Email message"); Console.ReadKey(); }
public IActionResult PushAddTaskToDB(string name, long typeId, long employeeId, long priorityId, string comment) { TaskModel taskModel = new TaskModel(0, typeId, HomeController.ActualUser.Id, employeeId, name, null, null, comment, 1, priorityId); TaskController.TaskDAO.Insert(taskModel); EmployeeModel model = EmployeeController.EmployeeDAO.SelectFirst(new Dictionary <string, object>() { { "IdEmployee", employeeId } }); //ściągnąć model po id razem z słownikiem TaskModel fullTask = TaskDAO.Select(TaskDAO.Columns.Fill(taskModel, true))[0]; MailMessageSender.SendMessage(model.Email, model.Name + " " + model.SurName, "Przydzielono Ci zadanie", fullTask, MailTypes.addTask); return(RedirectToAction("MainPage", "Home")); }
public IActionResult PushAddMeetingToDB(long meetingTypeId, string title, DateTime datestart, DateTime?dateend, TimeSpan hourStart, TimeSpan?hourEnd, long?roomId, string location, string note, long priorityId, string newIdMembers) { // TODO string[] newMembers = new string[0]; if (newIdMembers != null) { newMembers = newIdMembers.Split(","); } List <EmployeeModel> all = EmployeeController.GetAllEmployees(); List <EmployeeModel> members = new List <EmployeeModel>(); foreach (EmployeeModel employee in all) { foreach (string newM in newMembers) { if (!string.IsNullOrEmpty(newM)) { if (employee.Id == long.Parse(newM)) { members.Add(employee); } } } } MeetingModel meetingModel = new MeetingModel(0, meetingTypeId, datestart, dateend, hourStart, hourEnd, HomeController.ActualUser.Id, roomId, location, note, priorityId, title, members); MeetingDAO.Insert(meetingModel); List <MeetingModel> fullMeetingModel = MeetingDAO.Select(MeetingDAO.Columns.Fill(meetingModel, true)); foreach (EmployeeModel employee in fullMeetingModel[fullMeetingModel.Count - 1].Members) { MailMessageSender.SendMessage(employee.Email, employee.Name + " " + employee.SurName, "Zaproszono Cię na spotkanie", fullMeetingModel[fullMeetingModel.Count - 1], MailTypes.addMeeting); } return(RedirectToAction("MainPage", "Home")); }
public bool Email(ETLExportDefinition exportDefinition, string etlDirectory) { //Hold emails in collection so that we email all or nothing if an error is encountered. List <MailMessageSender> emails = new List <MailMessageSender>(); ETLData data = new ETLData(exportDefinition.ApplicationDatabase); try { foreach (ETLExportEmail email in exportDefinition.Emails) { MailMessageSender msg = new MailMessageSender(); msg.AppId = AppSettingsWrapper.applicationIdSetting.Value; msg.FromAddress = email.FromAddress; msg.Subject = email.Subject; if (!email.EmailIsDataSpecific) { if (email.ToAssignees != null) { string[] tos = email.ToAssignees.Split(','); foreach (string to in tos) { msg.Recipients.AddTO(to); } } if (email.CCAssignees != null) { string[] ccs = email.CCAssignees.Split(','); foreach (string cc in ccs) { msg.Recipients.AddCC(cc); } } if (email.BCCAssignees != null) { string[] bccs = email.BCCAssignees.Split(','); foreach (string bcc in bccs) { msg.Recipients.AddBCC(bcc); } } } if (etlDirectory.Length == 0) { //Data is explicitly listed in the email for someone to manually type in the data into Yardi Voyager DataSet ds = new DataSet(); ds = data.GetETLData(email.ProcedureName, "EmailData"); if (ds != null) { //Send one email per row //This only works for a flat structure table (not implemented a solution that will allow Parent - child relationship) //In the case of Property and Job Cost from AIMS this can be explained in a flat structure table. //An example that doesn't follow this is Capval Property Valuation and multiple unit ERV records. //At present CapVal is not requesting an email solution, hopefully capval will only ever use an ETL solution that //does not experience this issue. Not sure how an email solution would work anyway with regards an email solution - //potentially a lot of data to manually key in! foreach (DataRow row in ds.Tables[0].Rows) { if (email.EmailIsDataSpecific) { string[] tos = row["_EmailRecipients"].ToString().Split(','); foreach (string to in tos) { msg.Recipients.AddTO(to); } //May need to add CCs here as well if developer adds a cc column? } msg.Body = ExamineData(row, email.Body); msg.IsHtml = true; emails.Add(msg); } } } else { //Attach ETL files to Email for someone to manually import the data via the ETL screens in Voyager foreach (string etlFile in Directory.GetFiles(etlDirectory)) { FileInfo file = new FileInfo(etlFile); Attachment attach = new Attachment(etlDirectory, file.Name); msg.Attachments.Add(attach); } msg.Body = email.Body; msg.IsHtml = true; emails.Add(msg); } } foreach (MailMessageSender email in emails) { email.SendMail(); } //Now mark ETL row as processed! - update _Status column of record data.UpdateETLDataStatus(exportDefinition.StatusProcedureName, (int)Common.Enums.ETLStatus.Success); } catch (Exception ex) { MGRELog.Write(ex); //Now mark ETL row as failed! - update _Status column of record data.UpdateETLDataStatus(exportDefinition.StatusProcedureName, (int)Common.Enums.ETLStatus.Failed); } return(true); }
//// ReSharper disable MemberCanBePrivate.Global public static void _Run(MailMessage message) { var sender = new MailMessageSender(); sender.Send(message); }
public IActionResult PushAddEmployeeToDB(string name, string surname, string email, string phone, long positionId, bool addNewEmpleyeePermission, bool addNewTaskPermission, bool addNewEventPermission, bool previewEmployeesPermission) { Random random = new Random(); EmployeeModel employeeModel = new EmployeeModel(0, name, surname, email, phone, true, positionId); bool randomLoginAndPassword = true; string login = string.Empty; string password = string.Empty; User user = null; do { login = name.Substring(0, 3).ToLower() + surname.Substring(0, 3).ToLower() + random.Next(0, 9999).ToString("D4"); password = Extensions.GeneratePasswordExtensions.GenerateRandomPassword(); List <object[]> usersList = BaseDAO.Select("Users", null, new Dictionary <string, object>() { { "Login", login } }); if (!usersList.Any()) { EmployeeDAO.Insert(employeeModel); employeeModel = EmployeeDAO.SelectFirst(EmployeeDAO.Columns.Fill(employeeModel, true)); BaseDAO.Insert("Users", new Dictionary <string, object> { { "Login", login }, { "Password", password }, { "IdEmployee", employeeModel.Id } // Zła wartość }); if (addNewEmpleyeePermission) { BaseDAO.Insert("EmployeePermissions", new Dictionary <string, object>() { { "IdEmployee", employeeModel.Id }, { "IdPermission", 1 } }); } if (addNewTaskPermission) { BaseDAO.Insert("EmployeePermissions", new Dictionary <string, object>() { { "IdEmployee", employeeModel.Id }, { "IdPermission", 2 } }); } if (addNewEventPermission) { BaseDAO.Insert("EmployeePermissions", new Dictionary <string, object>() { { "IdEmployee", employeeModel.Id }, { "IdPermission", 3 } }); } if (previewEmployeesPermission) { BaseDAO.Insert("EmployeePermissions", new Dictionary <string, object>() { { "IdEmployee", employeeModel.Id }, { "IdPermission", 4 } }); } user = new User(login, password); randomLoginAndPassword = false; } }while (randomLoginAndPassword); MailMessageSender.SendMessage(employeeModel.Email, employeeModel.Name + " " + employeeModel.SurName, "Dane logowania", user, MailTypes.addEmployee); return(RedirectToAction("MainPage", "Home")); }