public ActionResult AddCommentToNotification(int notificationId, string commentText)
        {
            var loggedUserEmail = System.Web.HttpContext.Current.Session["loggedUserEmail"].ToString();

            _loggedTutor = _tutorRepository.Filter(y => y.User.Email == loggedUserEmail).FirstOrDefault();
            var selectedNotification = _notificationRepository.GetById(notificationId);

            selectedNotification.NotificationComments.Add(new NotificationComment
            {
                CommentText = commentText,
                Commenter   = _loggedTutor.User
            });
            _notificationRepository.Update(selectedNotification);
            var users = selectedNotification.RecipientUsers.ToList();

            foreach (var user in users)
            {
                if (!user.Email.Equals(loggedUserEmail))
                {
                    MailgunEmailService.SendEmailToUser(user, MessageService.ConstruirMensaje(user.Role, selectedNotification.Title));
                }
            }
            var creatorUser = selectedNotification.NotificationCreator.User;

            if (!loggedUserEmail.Equals(creatorUser.Email))
            {
                MailgunEmailService.SendEmailToUser(creatorUser, MessageService.ConstruirMensaje(creatorUser.Role, selectedNotification.Title));
            }
            return(RedirectToAction("Index"));
        }
Ejemplo n.º 2
0
        private static void SendReportEmail(string[] emails, string mailServiceKey, DateTime startDate,
                                            Tuple <List <ErrorReportCommand.ReportRow>, bool> jobsReportInfo,
                                            Tuple <List <Report>, bool> apReportInfo,
                                            Tuple <List <List <string> >, bool> dataLakeReportInfo,
                                            bool systemStatus)
        {
            var mailgun   = new MailgunEmailService(mailServiceKey);
            var plainText = String.Concat(GetHtmlSummary(startDate, systemStatus)
                                          , GetHtmlJobsReport(startDate, jobsReportInfo.Item1)
                                          , GetHtmlCheckApReport(apReportInfo.Item1)
                                          , GetHtmlCheckDataLakeReport(dataLakeReportInfo.Item1));

            foreach (var email in emails)
            {
                var emailSending = mailgun.SendHTMLMessage(email, "Health Check on YEAR-AP System", plainText);

                if (emailSending.IsSuccessful)
                {
                    Console.WriteLine($"Email sent to {email}");
                }
                else
                {
                    Console.WriteLine("Failed to send the e-mail");
                }
            }
        }
        public ActionResult SendNewMessage([Bind(Prefix = "Item2")] MessageToTeacherModel model)
        {
            if (HttpContext.Session != null)
            {
                var loggedUserEmail = System.Web.HttpContext.Current.Session["loggedUserEmail"].ToString();
                var loggedTutor     = _tutorRepository.Filter(y => y.User.Email == loggedUserEmail).FirstOrDefault();
                var teacher         = _teacherRepository.Filter(x => x.User.Email == model.To).ToList().FirstOrDefault();

                if (teacher == null)
                {
                    return(RedirectToAction("Index"));
                }
                var newNotification = new Notification(model.Subject, model.Message, loggedTutor, teacher,
                                                       NotificationType.Personal, _academicYearRepository.GetCurrentAcademicYear())
                {
                    Approved  = true,
                    SendEmail = true
                };
                newNotification.RecipientUsers.Add(teacher.User);
                _notificationRepository.Create(newNotification);
                MailgunEmailService.SendEmailToUser(teacher.User, MessageService.ConstruirMensaje(teacher.User.Role));
                ViewBag.Message = "Mensaje Enviado!";
            }
            else
            {
                ViewBag.Message = "Mensaje No Enviado!";
            }
            return(RedirectToAction("Index", "Notification", new { filter = "Personal" }));
        }
        public ActionResult Add(NotificationRegisterModel eventNotification)
        {
            eventNotification.NotificationCreator = _userRepository.GetById(Convert.ToInt64(_sessionManagement.GetUserLoggedId())).UserOwner.Id;
            eventNotification.AcademicYear        = _academicYearRepository.GetCurrentAcademicYear().Id;
            var notificationIdentity = Mapper.Map <Notification>(eventNotification);
            var approved             = _sessionManagement.GetUserLoggedRole().Equals("Administrador");

            notificationIdentity.Approved         = approved;
            notificationIdentity.PeopleDirectedTo = GetDestinationName(notificationIdentity);
            notificationIdentity = _notificationRepository.Create(notificationIdentity);
            var users = _userRepository.Filter(x => x.Role.Name == "Administrador");

            if (!approved)
            {
                foreach (var user in users)
                {
                    MailgunEmailService.SendEmailToUser(user, MessageService.ApproveMessage());
                }
            }
            _notificationHandlerService.SendAllPending();
            const string title   = "Notificación Agregada";
            var          content = "La notificacion " + notificationIdentity.Title + " ha sido agregada exitosamente.";

            _viewMessageLogic.SetNewMessage(title, content, ViewMessageType.SuccessMessage);
            return(RedirectToAction("Index"));
        }
Ejemplo n.º 5
0
        private void SetupWithMockHttpClientFactory(bool success = true)
        {
            var mockHttpClientFactory = new Mock <IHttpClientFactory>();
            var clientHandlerStub     = new DelegatingHandlerStub(success);
            var client = new HttpClient(clientHandlerStub);

            mockHttpClientFactory.Setup(_ => _.CreateClient(It.IsAny <string>())).Returns(client);
            _mailgunEmailService = new MailgunEmailService(mockHttpClientFactory.Object, new LoggerFactory(), Options.Create(_emailSettings));
        }
        public static void Handler(SQSEvent sqsEvent, ILambdaContext context)
        {
            context.Logger.LogLine($"Received SQSEvent with {sqsEvent.Records.Count} SQSMessage record(s)");

            context.Logger.LogLine("Retrieving ApiKey");
            string apiKey = String.Empty;

            using (var ssmClient = new AmazonSimpleSystemsManagementClient())
            {
                var response = ssmClient.GetParameterAsync(
                    new Amazon.SimpleSystemsManagement.Model.GetParameterRequest
                {
                    Name           = Environment.GetEnvironmentVariable("Email__ServiceApiKeyName"),
                    WithDecryption = true
                }
                    ).GetAwaiter().GetResult();
                apiKey = response.Parameter.Value;
            }

            context.Logger.LogLine("Creating EmailService object");
            var emailService = new MailgunEmailService(new MailgunEmailService.Options
            {
                FromAddress   = Environment.GetEnvironmentVariable("Email__FromAddress"),
                MailDomain    = Environment.GetEnvironmentVariable("Email__MailDomain"),
                ServiceUrl    = Environment.GetEnvironmentVariable("Email__ServiceUrl"),
                ServiceApiKey = apiKey
            });

            foreach (var sqsMessage in sqsEvent.Records)
            {
                context.Logger.LogLine($"Processing message {sqsMessage.MessageId}");

                // Parse out recipient, subject, and email body
                var strArray  = sqsMessage.Body.Split(MessageSeparator, 3, StringSplitOptions.None);
                var recipient = strArray[0];
                context.Logger.LogLine($"({sqsMessage.MessageId}) To: {recipient}");
                var subject = strArray[1];
                context.Logger.LogLine($"({sqsMessage.MessageId}) Subject: {subject}");
                var body = strArray[2];
                context.Logger.LogLine($"({sqsMessage.MessageId}) Subject: {body}");

                // Send the e-mail
                var emailMessage = new Email.EmailMessage
                {
                    EmailAddress = recipient,
                    Subject      = subject,
                    Body         = body
                };
                var result = emailService.SendEmailAsync(emailMessage).GetAwaiter().GetResult();
                context.Logger.LogLine($"({sqsMessage.MessageId}) Email service returned success: {result.Success} details: {result.Details}");
            }
        }
Ejemplo n.º 7
0
        public ActionResult RecoverPassword(LostPasswordModel model)
        {
            var user = _userRepository.Filter(x => x.Email.Equals(model.Email)).FirstOrDefault();

            if (user == null)
            {
                return(RedirectToAction("Index", "Home"));
            }
            var password = _passwordGenerationService.GenerateTemporaryPassword();

            user.Password = password;
            user.HashPassword();
            user.DefaultPassword        = user.Password;
            user.IsUsingDefaultPassword = true;
            _userRepository.Update(user);
            MailgunEmailService.SendEmailToUser(user, MessageService.ChangePasswordMessage(password));
            return(RedirectToAction("LogIn", "Account"));
        }
Ejemplo n.º 8
0
        public ActionResult Create(HomeworkRegisterModel registerModelHomework)
        {
            var toCreate  = Mapper.Map <Homework>(registerModelHomework);
            var teacherId = GetTeacherId();

            toCreate.AcademicCourse = _academicCourseRepository.Filter(x => x.Teacher != null && x.Teacher.User.Id == teacherId && x.Course.Id == registerModelHomework.Course).FirstOrDefault();
            _homeworkRepository.Create(toCreate);
            const string title   = "Tarea agregada";
            string       content = "La tarea " + toCreate.Title + " ha sido agregado exitosamente.";

            _viewMessageLogic.SetNewMessage(title, content, ViewMessageType.SuccessMessage);
            var studentsTutors =
                _studentRepository.Filter(
                    x => x.MyGrade != null && x.MyGrade.CoursesDetails.Any(y => y.Id == toCreate.AcademicCourse.Id))
                .ToList();

            foreach (var studentTutor in studentsTutors)
            {
                var tutorUser = studentTutor.Tutor1.User;
                MailgunEmailService.SendEmailToUser(tutorUser, MessageService.NotificarTarea(toCreate.Title));
            }
            return(RedirectToAction("Index"));
        }
Ejemplo n.º 9
0
        public static void Main(string[] args)
        {
            var isTest = true;

            Console.WriteLine("Are you running this as a test: (Y/N)");
            var answer = Console.ReadKey();

            isTest = answer.KeyChar == 'y' || answer.KeyChar == 'Y';
Start:
            var results = new List <Dictionary <MemberList.Member, MemberList.Member> >();

            using (var file = File.OpenText("members.json"))
                using (var reader = new JsonTextReader(file))
                {
                    var obj        = JToken.ReadFrom(reader);
                    var memberList = obj.ToObject <MemberList>();
                    Console.WriteLine($"\nNumber of players: {memberList.Members.Count}");
                    Console.WriteLine("Randomizing...\n");

                    while (results.Count < memberList.Members.Count)
                    {
                        MemberList.Member giver = null;
                        while (giver == null)
                        {
                            var rand = (new Random(Guid.NewGuid().GetHashCode()).Next(1, memberList.Members.Count + 1));
                            giver = results.Any(r => r.Keys.Any(k => k.Id == rand))
                            ? null
                            : memberList.Members.First(m => m.Id == rand);
                        }
                        Console.WriteLine("Randomizing giver: " + giver.Name);
                        MemberList.Member receiver = null;
                        var checkCount             = 0;
                        while (receiver == null)
                        {
                            var rand = (new Random(Guid.NewGuid().GetHashCode()).Next(1, memberList.Members.Count + 1));
                            receiver = giver.Ineligible.Contains(rand) || giver.Id == rand || results.Any(r => r.Values.Any(v => v.Id == rand))
                            ? null
                            : memberList.Members.First(m => m.Id == rand);
                            checkCount++;
                            if (checkCount > 5)
                            {
                                goto Start;
                            }
                        }
                        if (isTest)
                        {
                            Console.WriteLine($"Giver: {giver.Name} => Receiver: {receiver.Name}\n");
                        }

                        results.Add(new Dictionary <MemberList.Member, MemberList.Member>()
                        {
                            { giver, receiver }
                        });
                    }

                    Console.WriteLine("Randomizing complete");
                }

            if (isTest)
            {
                foreach (var email in results)
                {
                    MailgunEmailService.SendEmail(email.First().Key.Name, "*****@*****.**", email.First().Value, true);
                }
                Console.WriteLine("Press any key to exit");
                Console.ReadKey();
                return;
            }

            Console.WriteLine("Preparing Emails...");

            foreach (var email in results)
            {
                MailgunEmailService.SendEmail(email.First().Key.Name, email.First().Key.Email, email.First().Value, false);
            }

            Console.WriteLine("\nEmails sent");
            Console.WriteLine("Press any key to exit");
            Console.ReadLine();
        }
Ejemplo n.º 10
0
 public MailgunEmailServiceTests()
 {
     _mailgunEmailService = new MailgunEmailService(null, new LoggerFactory(), Options.Create(_emailSettings));
 }