Beispiel #1
0
        public static bool ProcessOrder(ICrumbsRepository crumbsRepository, Invoice invoice, string serverPath, string email, bool updateCopies)
        {
            List<MidiFile> files = new List<MidiFile>();
            User user = (crumbsRepository as IUserRepository).FindUserByID(invoice.UserID);
            Mailing mail = crumbsRepository.AllMailings.SingleOrDefault(item => item.Name == "Send_MIDI");

            if (user.UserID == 20)
            {
                User newUser = (crumbsRepository as IUserRepository).FindUserByEmail(email);
                if (newUser == null)
                {
                    newUser = new User()
                    {
                        Type = 3,
                        UserKey = email,
                        UserName = email,
                        Email = email,
                        CreateDate = DateTime.Now,
                        LastLoginDate = DateTime.Now
                    };
                    (crumbsRepository as IUserRepository).InsertOrUpdateUser(newUser);
                    crumbsRepository.Save();
                }
                user = newUser;
            }

            if (user == null || mail == null)
                return false;

            string userEmail = user.Email;
            if (string.IsNullOrEmpty(userEmail))
                userEmail = email;

            if (string.IsNullOrEmpty(userEmail))
                return false;

            SmtpClient client = null;
            try
            {
                bool useGMailForOrders = false;
                string s = ConfigurationManager.AppSettings["UseGMailForOrders"];
                if (string.IsNullOrEmpty(s) == false)
                {
                    useGMailForOrders = Convert.ToBoolean(s);
                }

                if (useGMailForOrders == true)
                {
                    client = new SmtpClient("smtp.gmail.com", 587);
                    client.EnableSsl = true;
                    client.Timeout = 10000;
                    client.DeliveryMethod = SmtpDeliveryMethod.Network;
                    client.UseDefaultCredentials = false;
                    client.Credentials = new NetworkCredential("*****@*****.**", "Crumbs123");
                }
                else
                {
                    client = new SmtpClient("m02.internetmailserver.net", 587);
                    client.EnableSsl = false;
                    client.Credentials = new NetworkCredential("*****@*****.**", "Crumbs123", "");
                }

                MailAddress from = new MailAddress("*****@*****.**", "PianoCrumbs.com");
                MailAddress to = new MailAddress(userEmail, "");
                MailMessage message = new MailMessage(from, to);

                message.Subject = mail.Subject;
                message.IsBodyHtml = true;
                message.CC.Add(new MailAddress("*****@*****.**", "PianoCrumbs.com"));

                if (invoice.MidiID.HasValue)
                {
                    MidiFile file = crumbsRepository.FindMidiFile(invoice.MidiID.Value);
                    if (file != null)
                    {
                        string path = MidiFileHelper.getMidiPath(file);
                        string FullPath = serverPath + path;

                        Attachment attachment = new Attachment(FullPath);
                        attachment.Name = file.FileName;
                        message.Attachments.Add(attachment);

                        files.Add(file);
                    }
                }
                else if (invoice.PackageID.HasValue)
                {
                    Package package = crumbsRepository.FindPackage(invoice.PackageID.Value);
                    if (package != null)
                    {
                        foreach (MidiFile file in package.MidiFiles)
                        {
                            string path = MidiFileHelper.getMidiPath(file);
                            string FullPath = serverPath + path;

                            Attachment attachment = new Attachment(FullPath);
                            attachment.Name = file.FileName;
                            message.Attachments.Add(attachment);

                            files.Add(file);
                        }
                    }
                }
                message.Body = string.Format(mail.Text, user.UserName, "", "", "");

                client.Send(message);
            }
            catch (Exception ex)
            {
                if (ex.InnerException != null)
                {
                    invoice.Comment = ex.InnerException.Message + " | " + DateTime.Now.ToString("s");
                }
                else
                {
                    invoice.Comment = ex.Message + " | " + DateTime.Now.ToString("s");
                }
                crumbsRepository.InsertOrUpdateInvoice(invoice);
                crumbsRepository.Save();

                return false;
            }

            // Create new SentMail record
            SentMail sent = new SentMail();
            sent.UserID = user.UserID;
            sent.MailID = mail.ID;
            sent.Date = DateTime.Now;
            crumbsRepository.InsertOrUpdateSentMail(sent);

            if (user.Role == null && updateCopies == true)
            {
                // Update MidiFile record - substruct one copy
                foreach (MidiFile file in files)
                {
                    file.CopiesLeft -= 1;
                    crumbsRepository.InsertOrUpdateMidiFile(file);
                }
            }

            // Update Invoice with SentMail ID
            invoice.Comment = userEmail + " | " + DateTime.Now.ToString("s");
            invoice.UserID = user.UserID;
            crumbsRepository.InsertOrUpdateInvoice(invoice);

            crumbsRepository.Save();
            return true;
        }
        public ActionResult ForgotPassword(ForgotPasswordModel model)
        {
            if (ModelState.IsValid)
            {
                MembershipUserCollection users = Membership.FindUsersByName(model.Name);
                if (users == null || users.Count != 1)
                {
                    return RedirectToAction("ForgotPasswordNotFound");
                }

                IEnumerator userList = users.GetEnumerator();
                userList.MoveNext();
                MembershipUser user = userList.Current as MembershipUser;

                SmtpClient client = new SmtpClient("smtp.gmail.com", 587);
                client.EnableSsl = true;
                MailAddress from = new MailAddress("*****@*****.**", "PianoCrumbs.com");
                MailAddress to = new MailAddress(user.Email, "");
                MailMessage message = new MailMessage(from, to);
                message.Subject = "Password Reset";
                message.IsBodyHtml = true;
                string resetLink = Url.Action("ResetPassword", "Account", new { username = user.UserName, reset = CrumbsExtensions.HashResetParams(user.UserName, user.ProviderUserKey.ToString()) }, Request.Url.Scheme);

                Mailing mail = (crumbsRepository as ICrumbsRepository).AllMailings.SingleOrDefault(item => item.Name == "ResetPassword");
                if (mail == null)
                {
                    return View("NotFound");
                }

                message.Body = string.Format(mail.Text, user.UserName, resetLink);

                //string unsubLink = Url.Action("Unsubscribe", "Account", new { username = user.UserName, reset = HashResetParams(user.UserName, user.ProviderUserKey.ToString()) }, Request.Url.Scheme);
                //message.Body += "<p><a href='" + unsubLink + "'>Unsubscribe</a>";

                NetworkCredential myCreds = new NetworkCredential("*****@*****.**", "Crumbs123", "");
                client.Credentials = myCreds;

                bool resetPasswordSucceeded = true;
                try
                {
                    client.Send(message);
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Exception is:" + ex.ToString());
                }

                User dbUser = usersRepository.FindUser(user.ProviderUserKey.ToString());
                if (dbUser != null)
                {
                    SentMail sent = new SentMail();
                    sent.UserID = dbUser.UserID;
                    sent.MailID = mail.ID;
                    sent.Date = DateTime.Now;

                    crumbsRepository.InsertOrUpdateSentMail(sent);
                    crumbsRepository.Save();
                }

                if (resetPasswordSucceeded)
                {
                    return RedirectToAction("ForgotPasswordSuccess");
                }
                else
                {
                    ModelState.AddModelError("", "Something went wrong");
                }
            }

            // If we got this far, something failed, redisplay form
            return View(model);
        }
        public bool SendMail(User user, Mailing mail, Price price, MidiFile file)
        {
            if (user.Email == null)
                return false;

            if (price != null)
            {
                if (UpdatePromotionalPricing(user, price) == false)
                    return false;
            }

            try
            {
                SmtpClient client = new SmtpClient("m02.internetmailserver.net", 587);
                client.EnableSsl = false;
                MailAddress from = new MailAddress("*****@*****.**", "PianoCrumbs.com");
                MailAddress to = new MailAddress(user.Email, "");
                MailMessage message = new MailMessage(from, to);
                message.Subject = mail.Subject;
                message.IsBodyHtml = true;

                string fileName = "";
                string urlAction = "";

                if (file != null)
                {
                    fileName = file.Name;
                    urlAction = Url.Action("MidiView", "Crumbs", new { id = file.MidiID, name = file.DisplayName }, "http");
                }

                string latestLinks = "";
                IQueryable<MidiFile> latestFiles = crumbsRepository.LatestCrumbs.Take(5);
                foreach (var item in latestFiles)
                {
                    string url = Url.Action("MidiView", "Crumbs", new { id = item.MidiID, name = item.DisplayName }, "http");
                    latestLinks += string.Format("<p><a href='{0}'>{0}</a></p>", url);
                }

                string popualrLinks = "";
                IQueryable<MidiFile> popularFiles = crumbsRepository.RatedCrumbs.Take(5);
                foreach (var item in popularFiles)
                {
                    string url = Url.Action("MidiView", "Crumbs", new { id = item.MidiID, name = item.DisplayName }, "http");
                    popualrLinks += string.Format("<p><a href='{0}'>{0}</a></p>", url);
                }

                message.Body = string.Format(mail.Text, user.UserName, fileName, urlAction, latestLinks, popualrLinks);

                string unsubLink = Url.Action("Unsubscribe", "Account", new { username = user.UserName, reset = CrumbsExtensions.HashResetParams(user.UserName, user.UserKey) }, Request.Url.Scheme);
                message.Body += "<p><a href='" + unsubLink + "'>Unsubscribe</a>";

                NetworkCredential myCreds = new NetworkCredential("*****@*****.**", "Crumbs123", "");
                client.Credentials = myCreds;

                client.Send(message);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Exception is:" + ex.ToString());
                return false;
            }

            SentMail sent = new SentMail();
            sent.UserID = user.UserID;
            sent.MailID = mail.ID;
            sent.Date = DateTime.Now;

            crumbsRepository.InsertOrUpdateSentMail(sent);
            crumbsRepository.Save();

            return true;
        }