示例#1
0
        /// <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);
        }
示例#2
0
        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"));
        }
示例#3
0
        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);
        }
示例#5
0
        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();
        }
示例#6
0
        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"));
        }
示例#7
0
        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"));
        }
示例#8
0
        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);
        }
示例#9
0
        //// ReSharper disable MemberCanBePrivate.Global
        public static void _Run(MailMessage message)
        {
            var sender = new MailMessageSender();

            sender.Send(message);
        }
示例#10
0
        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"));
        }