Exemplo n.º 1
0
        public Person Send(Person p, Enums.MailType type, string additionalinfo)
        {
            if (!IsApproved(p))
                return p;
            PersonPersons = new List<Person>(p.Persons.Select(x => new Person { Name = !string.IsNullOrEmpty(x.Nickname) ? x.Nickname : x.Person.Name, ExternalID = x.Person.ExternalID, ID = x.Person.ID })) { new Person { Name = p.Name, ExternalID = p.ExternalID, ID = p.ID } };
            var body = string.Empty;
            var subject = string.Empty;
            string name;
            //bool includeimages = false;
            var mailHelper = new MailHelper();
            switch (type)
            {
                case Enums.MailType.EventInvitation:
                    name =
                        (PersonPersons.SingleOrDefault(x => x.ID == EventTriggerPerson.ID) ??
                         new Person { Name = EventTriggerPerson.Name }).Name;
                    subject = "This is an invitation from " + name;

                    body = mailHelper.MailTemplate();
                    body = body.Replace("[sma:preheader]", CreatePreHeader("This is an invitation from " + name));
                    
                    body = body.Replace("[sma:invitation]", mailHelper.SmaInvitation(true));
                    body = body.Replace("[sma:eventname]", Event.Name);
                    body = body.Replace("[sma:event]", mailHelper.GetWhenWhereTable(Event, true));
                    body = body.Replace("[sma:optional]", Event.OptionalMessage);
                    if (p.Status == (byte) Enums.PersonStatus.Inaktiv)
                    {
                        body = body.Replace("[sma:firsttime]", mailHelper.GetFirstTimeInfo(EventTriggerPerson));
                        body = body.Replace("[sma:Wall]", mailHelper.SmaWall(Wallposts, p, false));
                        body = body.Replace("[sma:attending]", mailHelper.SmaAttending(EventPersons, p, false, PersonPersons, Event));
                        body = body.Replace("[sma:login]", mailHelper.SmaLink(p, Event, true));
                    }
                    else
                    {
                        body = body.Replace("[sma:firsttime]", string.Empty);
                        body = body.Replace("[sma:Wall]", mailHelper.SmaWall(Wallposts, p, false));
                        body = body.Replace("[sma:attending]", mailHelper.SmaAttending(EventPersons, p, false, PersonPersons, Event));
                        body = body.Replace("[sma:login]", mailHelper.SmaLink(p, Event, true));
                    }
                    

                    break;
                case Enums.MailType.AccountActivated:
                    subject = "Accout activation success, SignMiApp.com";
                    var b = "<h1>Your Activation Succeed!!</h1>";
                    b += "<h2>Welcome " + p.Name + "</h2>";
                    b += "<p><b>Yoyr credentials</b></p>";
                    b += "<p>Username: "******"</p>";
                    b += "<p>Password: "******"</p>";
                    b +=
                        "<br /><br /><p>Change yor password to something more easy to remember, click the cogwheel to change your password</p>";
                    body = mailHelper.MailTemplate();
                    body = body.Replace("[sma:preheader]", CreatePreHeader("Activation succeed, welcome "+p.Name));
                    body = body.Replace("[sma:invitation]", mailHelper.SmaInvitation(false));
                    body = body.Replace("[sma:eventname]", string.Empty);
                    body = body.Replace("[sma:event]", mailHelper.GetWhenWhereTable(Event, false));
                    body = body.Replace("[sma:optional]", b);
                    body = body.Replace("[sma:firsttime]", string.Empty);
                    body = body.Replace("[sma:Wall]", mailHelper.SmaWall(Wallposts, p,  false));
                    body = body.Replace("[sma:attending]", mailHelper.SmaAttending(EventPersons, p, false,  PersonPersons, Event));
                    body = body.Replace("[sma:login]", mailHelper.SmaLink(p, Event, true));

                    break;
                //case Enums.MailType.AccountStart:
                //    subject = "Accout activation one step away, SignMiApp.com";
                //    body += "<h1>Click the link below to activate your account!!</h1>";
                //    body += "<a href='http://www.signmiapp.com/signmiappservice/account/activateaccount/" + p.ExternalID + "'>Activate account</a>";
                //    body = MailTop() + body;

                //    break;
                case Enums.MailType.AccountReset:
                    subject = "Password reset success, SignMiApp.com";
                    var y = "<h1>Your new password!!</h1>";
                    y += "<p>" + p.Password + "</p>";
                    body = mailHelper.MailTemplate();
                    body = body.Replace("[sma:preheader]", CreatePreHeader("Your new password"));
                    body = body.Replace("[sma:invitation]", mailHelper.SmaInvitation(false));
                    body = body.Replace("[sma:eventname]", string.Empty);
                    body = body.Replace("[sma:event]", mailHelper.GetWhenWhereTable(Event, false));
                    body = body.Replace("[sma:optional]", y);
                    body = body.Replace("[sma:firsttime]", string.Empty);
                    body = body.Replace("[sma:Wall]", mailHelper.SmaWall(Wallposts, p, false));
                    body = body.Replace("[sma:attending]", mailHelper.SmaAttending(EventPersons, p, false, PersonPersons, Event));
                    body = body.Replace("[sma:login]", mailHelper.SmaLink(p, Event, true));
                    break;
                case Enums.MailType.PersonlInvitation:
                    subject = "Invitation from SignMiApp.com";
                    body += "<h1>Invitation from SignMiApp</h1>";
                    body += "<h2>Welcome " + p.Name + "</h2><p>You are welcome to use this service to create all types of events and happenings for you and your people.</p>";

                    break;
                case Enums.MailType.EventMessCreated:
                    name =
                            (PersonPersons.SingleOrDefault(x => x.ID == EventTriggerPerson.ID) ??
                             new Person { Name = EventTriggerPerson.Name }).Name;
                    subject = name + " has created a new wallpost for " + Event.Name;
                    body = mailHelper.MailTemplate();
                    body = body.Replace("[sma:preheader]", CreatePreHeader("New wallpost: "+ Event.Wallposts.OrderByDescending(x=>x.Date).First().Message));
                    body = body.Replace("[sma:invitation]", mailHelper.SmaInvitation(false));
                    body = body.Replace("[sma:eventname]", Event.Name);
                    body = body.Replace("[sma:event]", mailHelper.GetWhenWhereTable(Event, true));
                    body = body.Replace("[sma:optional]", string.Empty);
                    body = body.Replace("[sma:firsttime]", string.Empty);
                    body = body.Replace("[sma:Wall]", mailHelper.SmaWall(Wallposts, p, true));
                    body = body.Replace("[sma:attending]", mailHelper.SmaAttending(EventPersons, p, true, PersonPersons, Event));
                    body = body.Replace("[sma:login]", mailHelper.SmaLink(p, Event, true));
                    //body = MailTop() + body;
                    //includeimages = true;
                    break;
                case Enums.MailType.EventSignMiAppStatusChanged:
                    name =
                                (PersonPersons.SingleOrDefault(x => x.ID == EventTriggerPerson.ID) ??
                                 new Person { Name = EventTriggerPerson.Name }).Name;
                    Enums.Attending stat;
                    Enum.TryParse(additionalinfo, out stat);
                    subject = name + "'s new SignMiAppstatus is " + stat;
                    body = mailHelper.MailTemplate();
                    body = body.Replace("[sma:preheader]", CreatePreHeader(name + "'s new SignMiAppstatus is " + stat));
                    body = body.Replace("[sma:invitation]", mailHelper.SmaInvitation(false));
                    body = body.Replace("[sma:eventname]", Event.Name);
                    body = body.Replace("[sma:event]", mailHelper.GetWhenWhereTable(Event, true));
                    body = body.Replace("[sma:optional]", string.Empty);
                    body = body.Replace("[sma:firsttime]", string.Empty);
                    body = body.Replace("[sma:Wall]", mailHelper.SmaWall(Wallposts, p, true));
                    body = body.Replace("[sma:attending]", mailHelper.SmaAttending(EventPersons, p, true, PersonPersons, Event));
                    body = body.Replace("[sma:login]", mailHelper.SmaLink(p, Event, true));
                    //includeimages = true;
                    break;
                case Enums.MailType.EventCancellation:

                    subject = Event.Name + "is canceled";
                    body = mailHelper.MailTemplate();
                    body = body.Replace("[sma:preheader]", CreatePreHeader(Event.Name + "is canceled by "+EventTriggerPerson.Name));
                    body = body.Replace("[sma:invitation]", mailHelper.SmaInvitation(false));
                    body = body.Replace("[sma:eventname]", Event.Name);
                    body = body.Replace("[sma:event]", mailHelper.GetWhenWhereTable(Event, true));
                    body = body.Replace("[sma:optional]", additionalinfo);
                    body = body.Replace("[sma:firsttime]", string.Empty);
                    body = body.Replace("[sma:Wall]", mailHelper.SmaWall(Wallposts, p, true));
                    body = body.Replace("[sma:attending]", mailHelper.SmaAttending(EventPersons, p, true, PersonPersons, Event));
                    body = body.Replace("[sma:login]", mailHelper.SmaLink(p, Event, true));
                    //includeimages = true;
                    break;

                case Enums.MailType.EventReminder:

                    subject = "This is a reminder of " + Event.Name;
                    body = mailHelper.MailTemplate();
                    body = body.Replace("[sma:preheader]", CreatePreHeader("This is a reminder of " + Event.Name));
                    body = body.Replace("[sma:invitation]", mailHelper.SmaInvitation(false));
                    body = body.Replace("[sma:eventname]", Event.Name);
                    body = body.Replace("[sma:event]", mailHelper.GetWhenWhereTable(Event, true));
                    body = body.Replace("[sma:optional]", additionalinfo);
                    body = body.Replace("[sma:firsttime]", string.Empty);
                    body = body.Replace("[sma:Wall]", mailHelper.SmaWall(Wallposts, p,  true));
                    body = body.Replace("[sma:attending]", mailHelper.SmaAttending(EventPersons, p, true,  PersonPersons, Event));
                    body = body.Replace("[sma:login]", mailHelper.SmaLink(p, Event, true));
                    //includeimages = true;
                    break;
                case Enums.MailType.EventConfirmation:

                    subject = "Event confirmation, " + Event.Name;
                    body = mailHelper.MailTemplate();
                    body = body.Replace("[sma:preheader]", CreatePreHeader(Event.Name+ " is confirmed by " + EventTriggerPerson.Name));
                    body = body.Replace("[sma:invitation]", mailHelper.SmaInvitation(false));
                    body = body.Replace("[sma:eventname]", Event.Name);
                    body = body.Replace("[sma:event]", mailHelper.GetWhenWhereTable(Event, true));
                    body = body.Replace("[sma:optional]", additionalinfo);
                    body = body.Replace("[sma:firsttime]", string.Empty);
                    body = body.Replace("[sma:Wall]", mailHelper.SmaWall(Wallposts, p,  true));
                    body = body.Replace("[sma:attending]", mailHelper.SmaAttending(EventPersons, p, true,  PersonPersons, Event));
                    body = body.Replace("[sma:login]", mailHelper.SmaLink(p, Event, true));
                    //includeimages = true;
                    break;
            }

            //body += MailFooter();
            var m = new MailMessage
            {
                Body = body,
                From = new MailAddress("*****@*****.**", "SignMiApp.com"),
                BodyEncoding = System.Text.Encoding.UTF8,
                IsBodyHtml = true,
                Subject = subject,
                SubjectEncoding = System.Text.Encoding.UTF8,


            };
            var view = AlternateView.CreateAlternateViewFromString(body, null, "text/html");

            //if (_attachments != null && includeimages)
            //{
            //    foreach (var attachment in _attachments)
            //    {
            //        view.LinkedResources.Add(attachment);
            //    }
            //}
            m.AlternateViews.Add(view);
            m.Bcc.Add(type + "@signmiapp.com");
            try
            {
                m.To.Add(p.Email);
            }
            catch (Exception ex)
            {
                p.Loggs.Add(new Logg { Date = DateTime.Now, Message = ex.Message });
                return p;

            }


            //p.Mails.Add(new Mail
            //{
            //    ExternalID = mailId,
            //    PersonID = p.ID,
            //    Message = mailBody,
            //    Type = (int)type,
            //    Date = DateTime.Now

            //});

            try
            {
                _smtpServer.Send(m);
            }
            catch (Exception ex)
            {
                p.Loggs.Add(new Logg { Date = DateTime.Now, Message = ex.Message });
                return p;
            }
            return p;
        }