public void SendEmail(TestVM model) { if (ModelState.IsValid && !string.IsNullOrEmpty(model.EmailToSend) && !string.IsNullOrEmpty(model.Name)) { string body = ""; #region Generate random string (result in result variable) // var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; //var random = new Random(); var result = "";// new string(Enumerable.Repeat(chars, 8).Select(s => s[random.Next(s.Length)]).ToArray()); #endregion SiteDT siteDT = SitesManager.GetSite(model.SiteID); using (CastleClubEntities entities = new CastleClubEntities()) { Customer customer = entities.Customers.Where(c => c.Email == model.EmailToSend && c.SiteId == siteDT.Id).FirstOrDefault(); if (customer != null) { result = customer.UnEncryptPass; if (result == null) { var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; var random = new Random(); result = new string(Enumerable.Repeat(chars, 8).Select(s => s[random.Next(s.Length)]).ToArray()); Password p = new Password(result); customer.Password = p.SaltedPassword; customer.UnEncryptPass = p.ClearPassword; //customer. customer.SaltKey = p.SaltKey; entities.SaveChanges(); } } } body = string.Format(Email.WelcomeBodyEmail(), model.Name, model.EmailToSend, result, siteDT.Name, siteDT.Name, "PartsGeek", siteDT.Price, siteDT.PricePerQuarter, siteDT.Phone, siteDT.Email, siteDT.OfferDomain); string subject = string.Format(Email.WelcomeSubjectEmail(), siteDT.Name); CastleClub.BusinessLogic.Utils.Email.SendEmailWithBCC(siteDT.Email, siteDT.PasswordEmail, siteDT.SmtpAddress, subject, body , new List <string>() { model.EmailToSend }, new List <string>() { siteDT.WelcomeEmailBCC }, true); } }
public static bool CreateNewCustomerPaymentProfile(SiteDT site, CustomerDT customer, string cardNumber, string expirationDate, out long paymentProfile, out string message) { ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; using (ServiceSoapClient client = new ServiceSoapClient()) { paymentProfile = 0; message = string.Empty; var merchant = new MerchantAuthenticationType() { name = site.AuthorizeLoginId, transactionKey = site.AuthorizeTransactionKey }; CustomerPaymentProfileType customerPPT = new CustomerPaymentProfileType(); customerPPT.customerType = CustomerTypeEnum.individual; customerPPT.customerTypeSpecified = true; customerPPT.billTo = new CustomerAddressType() { firstName = customer.FirstName, lastName = customer.LastName, address = customer.Address, city = customer.City, country = "USA", state = customer.StateId, zip = customer.ZipCode }; CreditCardType ccT = new CreditCardType(); ccT.cardNumber = cardNumber; ccT.expirationDate = expirationDate; ccT.cardCode = string.Empty; PaymentType payment = new PaymentType(); payment.Item = ccT; customerPPT.payment = payment; var resp = client.CreateCustomerPaymentProfile(merchant, customer.AuthorizeProfileId, customerPPT, ValidationModeEnum.testMode); if (resp.resultCode == MessageTypeEnum.Ok) { paymentProfile = resp.customerPaymentProfileId; return(true); } else { message = resp.messages.Select(x => x.code + ": " + x.text).Aggregate((a, b) => a + "\n" + b); } return(false); } }
/// <summary> /// Get the resume of all transaction for a specific site. /// </summary> /// <param name="site">Site.</param> /// <param name="from">From date.</param> /// <param name="to">To date.</param> /// <param name="resp">Response, in index 0 is for successfull transactions, in index 1 is for failed transactions.</param> /// <param name="entities">Data base context.</param> private static void GetTransactionReportFromAuthorizeForSite(SiteDT site, DateTime from, DateTime to, decimal[] resp, CastleClubEntities entities) { var parameter = new Dictionary <SiteDT, List <TransactionDT> >(); var tmpList = entities.Transactions.Where(x => x.Invoice.Customer.SiteId == site.Id && x.TypeId != "REFUND" && x.SubmitDate >= from && x.SubmitDate <= to).ToList(); var tmpTransform = tmpList.Select(x => x.GetDT()); var tmpToList = tmpTransform.ToList(); parameter.Add(site, tmpToList); decimal[] report = CIM.GetTransactionRange(parameter); resp[0] = resp[0] + report[0]; resp[1] = resp[1] + report[1]; }
public static bool CreateCustomerProfileTransactionAuthCapture(SiteDT site, InvoiceDT invoice, CustomerDT customer, CreditCardDT creditCard, out long transactionId, out string message, out string code) { MerchantAuthenticationType merchantAT = new MerchantAuthenticationType(); merchantAT.name = site.AuthorizeLoginId; merchantAT.transactionKey = site.AuthorizeTransactionKey; ProfileTransactionType profileTT = new ProfileTransactionType(); ProfileTransAuthCaptureType profileTACT = new ProfileTransAuthCaptureType(); OrderExType orderET = new OrderExType(); orderET.invoiceNumber = invoice.Id.ToString(); profileTACT.amount = invoice.Amount; profileTACT.customerProfileId = customer.AuthorizeProfileId; profileTACT.customerPaymentProfileId = creditCard.AuthorizePaymentProfileId; profileTACT.order = orderET; profileTT.Item = profileTACT; ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; ServiceSoapClient client = new ServiceSoapClient(); CreateCustomerProfileTransactionResponseType resp = client.CreateCustomerProfileTransaction(merchantAT, profileTT, String.Empty); code = string.Empty; if (resp.directResponse != null) { PaymentGatewayResponse paymentGatewayResponse = new PaymentGatewayResponse(resp.directResponse); transactionId = paymentGatewayResponse.TransactionId; message = paymentGatewayResponse.ResponseReasonText; code = resp.messages != null && resp.messages.Count() > 0 ? resp.messages.Select(x => x.code + " - " + x.text).Aggregate((a, b) => a + "; " + b) : string.Empty; } else { transactionId = 0; if (resp.messages.Length > 0) { message = resp.messages[0].text; } else { message = ""; } } return(resp.resultCode == MessageTypeEnum.Ok); }
public ActionResult PreviewEmail(int ID) { var model = new PreviewEmailVM(); //int ID = 14; SiteDT siteDT = SitesManager.GetSite(ID); string name = "Alexander Broderick"; string email = "*****@*****.**"; var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; var random = new Random(); var result = new string(Enumerable.Repeat(chars, 8).Select(s => s[random.Next(s.Length)]).ToArray()); model.HtmlEmail = string.Format(Email.WelcomeBodyEmail(), name, email, result, siteDT.Name, siteDT.Name, "PartsGeek", siteDT.Price, siteDT.PricePerQuarter, siteDT.Phone, siteDT.Email, siteDT.OfferDomain); return(View(model)); }
public SiteDT GetDT() { SiteDT res = new SiteDT(); res.Id = Id; res.Name = Name; res.AltNames = AltNames; res.Subtitle = Subtitle; res.SignupDomain = SignupDomain; res.OfferDomain = OfferDomain; res.PricePerQuarter = PricePerQuarter; res.GroupId = GroupId; res.AuthorizeLoginId = AuthorizeLoginId; res.AuthorizeTransactionKey = AuthorizeTransactionKey; res.Active = Active; res.Phone = Phone; res.OfficeHours = OfficeHours; res.CSSOuterColor = CSSOuterColor; res.CSSBlueColor = CSSBlueColor; res.CSSEmphasizeColor = CSSEmphasizeColor; res.ParticipatingPropertiesLogos = ParticipatingPropertiesLogos; res.BusinessSector = BusinessSector; res.LastUpdate = LastUpdate; res.Benefits = Benefits; res.WeHaveAmassed = WeHaveAmassed; res.Email = Email; res.MailAddress = MailAddress; res.ShortName = ShortName; res.Price = Price; res.MasterCardEmailFormPercentage = (int)MasterCardEmailFormPercentage; res.VisaEmailFormPercentage = (int)VisaEmailFormPercentage; res.DiscoverEmailFormPercentage = (int)DiscoverEmailFormPercentage; res.MasterCardEmailFormCount = MasterCardEmailFormCount; res.VisaEmailFormCount = VisaEmailFormCount; res.DiscoverEmailFormCount = DiscoverEmailFormCount; res.MasterCardEmailFormTotal = MasterCardEmailFormTotal; res.VisaEmailFormTotal = VisaEmailFormTotal; res.DiscoverEmailFormTotal = DiscoverEmailFormTotal; res.SmtpAddress = SmtpAddress; res.SendWelcomeEmail = (bool)SendWelcomeEmail; res.PasswordEmail = PasswordEmail; res.WelcomeEmailDelay = WelcomeEmailDelay; res.SignUpFormat = SignUpFormat; res.WelcomeEmailBCC = WelcomeEmailBCC; res.ShortAddress = ShortAddress; return(res); }
public override void OnActionExecuting(ActionExecutingContext filterContext) { SiteDT site = SitesManager.GetSiteFromHostname(filterContext.HttpContext.Request.Url.Host); filterContext.Controller.ViewBag.Site = site; if (filterContext.HttpContext.Request.QueryString.AllKeys.Contains("s")) { filterContext.Controller.ViewBag.Referrer = ReferrersManagers.GetReferrer(filterContext.HttpContext.Request.QueryString["s"]).Name; } else { filterContext.Controller.ViewBag.Referrer = "PartsGeek.com"; } base.OnActionExecuting(filterContext); }
public ActionResult Welcome() { ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; if (CastleClub.BusinessLogic.Data.GlobalParameters.EmailWelcome) { SiteDT site = ViewBag.Site; CustomerDT customer = ViewBag.Customer; CastleClub.BusinessLogic.Utils.Email.SendEmail(site.Email, CastleClub.BusinessLogic.Data.GlobalParameters.EmailPassword, CastleClub.BusinessLogic.Data.GlobalParameters.Smtp, string.Format(Properties.Resources.EmailWelcomeSubjet, site.Name), string.Format(Properties.Resources.EmailWelcomeBody, customer.FirstName + " " + customer.LastName, customer.Email, customer.ClearPassword, site.Name, site.ShortName, "PartsGeek", site.Price, site.PricePerQuarter, site.Phone, site.Email, site.OfferDomain), new List <string>() { customer.Email }, true); } return(View("Welcome")); }
public ActionResult ActivateAllActiveCustomers() { AccessVM model = new AccessVM(); using (CastleClubEntities entities = new CastleClubEntities()) { //SiteDT site = entities.Sites.Where(s=> s.Active == true).ToList().Select(s => s.GetDT()).FirstOrDefault(); //var today = DateTime.Today.AddDays(-2); SiteDT site = SitesManager.GetSite(3); // List<CustomerDT> customers = entities.Customers.Where(c => c.StatusId == "ACTIVE" && c.SiteId == site.Id).ToList().Select(c => c.GetDT(false)).ToList(); List <CustomerDT> customers = entities.Customers.Where(c => c.SiteId == site.Id).ToList().Select(c => c.GetDT(false)).ToList(); //List<CustomerDT> customers = entities.Customers.ToList().Select(c => c.GetDT(false)).ToList(); /*List<int> idList = new List<int>() * { * };*/ string customerAutoPriceDiscount = ""; foreach (CustomerDT custom in customers) { try { /*if (idList.Contains(custom.Id) && custom.Status == DataTypes.Enums.CustomerStatus.ACTIVE) * { * //string response = CustomersManager.NewActivateMember(SitesManager.GetSite(custom.SiteId), custom, "CLOSED"); * string response = CustomersManager.NewActivateMember(SitesManager.GetSite(custom.SiteId), custom, "OPEN"); * } * else * if (idList.Contains(custom.Id) && custom.Status != DataTypes.Enums.CustomerStatus.ACTIVE) * { * string response = CustomersManager.NewActivateMember(SitesManager.GetSite(custom.SiteId), custom, "SUSPEND"); * customerAutoPriceDiscount += custom.Id.ToString() + " \n ,"; * } */ } catch (Exception e) { } // RootObject oMyclass = Newtonsoft.Json.JsonConvert.DeserializeObject<RootObject>(response); } return(View(model)); } }
private static void SendEmail(int SiteID, CustomerDT Customer, string ClearPassword) { SiteDT siteDT = SitesManager.GetSite(SiteID); string body = string.Format(Email.WelcomeBodyEmail(), Customer.FirstName, Customer.Email, ClearPassword, siteDT.Name, siteDT.Name, "PartsGeek", siteDT.Price, siteDT.PricePerQuarter, siteDT.Phone, siteDT.Email, siteDT.OfferDomain); string subject = string.Format(Email.WelcomeSubjectEmail(), siteDT.Name); /**/ CastleClub.BusinessLogic.Utils.Email.SendEmailWithBCC(siteDT.Email, siteDT.PasswordEmail, siteDT.SmtpAddress, subject, body , new List <string>() { Customer.Email }, new List <string>() { siteDT.WelcomeEmailBCC }, true); /**/ }
public static bool UpdateCustomerPaymentProfile(SiteDT site, CustomerDT customer, CreditCardDT creditCard) { using (ServiceSoapClient client = new ServiceSoapClient()) { var merchant = new MerchantAuthenticationType() { name = site.AuthorizeLoginId, transactionKey = site.AuthorizeTransactionKey }; var paymentProfileResponse = client.GetCustomerPaymentProfile(merchant, customer.AuthorizeProfileId, creditCard.AuthorizePaymentProfileId); if (paymentProfileResponse.resultCode == MessageTypeEnum.Ok) { CreditCardType creditCardType = new CreditCardType() { cardCode = string.Empty, cardNumber = creditCard.CardNumber, expirationDate = creditCard.ExpDate }; var customerUpdate = new CustomerPaymentProfileExType() { billTo = paymentProfileResponse.paymentProfile.billTo, customerPaymentProfileId = paymentProfileResponse.paymentProfile.customerPaymentProfileId, payment = new PaymentType() { Item = creditCardType } }; var updateResponse = client.UpdateCustomerPaymentProfile(merchant, customer.AuthorizeProfileId, null, ValidationModeEnum.none); if (updateResponse.resultCode == MessageTypeEnum.Ok) { return(true); } } return(false); } }
public static bool CreateCustomerProfileTransactionRefund(SiteDT site, InvoiceDT invoice, TransactionDT transaction, CustomerDT customer, CreditCardDT creditCard, out long transactionId, out string message) { //This datetime is when system change. int deployYear = CastleClub.BusinessLogic.Data.GlobalParameters.DeployYear; int deployMonth = CastleClub.BusinessLogic.Data.GlobalParameters.DeployMonth; int deployDay = CastleClub.BusinessLogic.Data.GlobalParameters.DeployDay; if (invoice.BilledDate >= new DateTime(deployYear, deployMonth, deployDay)) { MerchantAuthenticationType merchantAT = new MerchantAuthenticationType(); merchantAT.name = site.AuthorizeLoginId; merchantAT.transactionKey = site.AuthorizeTransactionKey; ProfileTransactionType profileTT = new ProfileTransactionType(); ProfileTransRefundType profileTRT = new ProfileTransRefundType(); OrderExType orderET = new OrderExType(); orderET.invoiceNumber = invoice.Id.ToString(); profileTRT.amount = invoice.Amount; profileTRT.transId = transaction.AuthorizeTransactionId.ToString(); profileTRT.customerProfileId = customer.AuthorizeProfileId; profileTRT.customerProfileIdSpecified = true; profileTRT.customerPaymentProfileId = creditCard.AuthorizePaymentProfileId; profileTRT.customerPaymentProfileIdSpecified = true; profileTRT.order = orderET; profileTT.Item = profileTRT; ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; ServiceSoapClient client = new ServiceSoapClient(); CreateCustomerProfileTransactionResponseType resp = client.CreateCustomerProfileTransaction(merchantAT, profileTT, String.Empty); if (resp.directResponse != null) { PaymentGatewayResponse paymentGatewayResponse = new PaymentGatewayResponse(resp.directResponse); transactionId = paymentGatewayResponse.TransactionId; message = paymentGatewayResponse.ResponseReasonText; } else { transactionId = 0; if (resp.messages.Length > 0) { message = resp.messages[0].text; } else { message = ""; } } return(resp.resultCode == MessageTypeEnum.Ok); } else { ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; using (ServiceSoapClient client = new ServiceSoapClient()) { MerchantAuthenticationType merchant = new MerchantAuthenticationType() { name = site.AuthorizeLoginId, transactionKey = site.AuthorizeTransactionKey }; ProfileTransactionType profileTT = new ProfileTransactionType(); ProfileTransRefundType profileTRT = new ProfileTransRefundType(); profileTRT.amount = invoice.Amount; profileTRT.transId = transaction.AuthorizeTransactionId.ToString(); profileTRT.creditCardNumberMasked = "XXXX" + creditCard.LastFourDigit; profileTT.Item = profileTRT; var resp = client.CreateCustomerProfileTransaction(merchant, profileTT, string.Empty); if (resp.resultCode == MessageTypeEnum.Ok) { PaymentGatewayResponse paymentGatewayResponse = new PaymentGatewayResponse(resp.directResponse); transactionId = paymentGatewayResponse.TransactionId; message = paymentGatewayResponse.ResponseReasonText; } else { transactionId = 0; message = string.Empty; message = resp.messages != null && resp.messages.Count() > 0 ? resp.messages.Select(a => a.text).Aggregate((a, b) => a + " - " + b) : string.Empty; } return(resp.resultCode == MessageTypeEnum.Ok); } } }
public static bool CreateCustomerProfile(SiteDT site, CustomerDT customer, CreditCardDT cc, out long customerProfileId, out long customerPaymentProfileId) { // if (1 == 0) { MerchantAuthenticationType merchantAT = new MerchantAuthenticationType(); merchantAT.name = site.AuthorizeLoginId; merchantAT.transactionKey = site.AuthorizeTransactionKey; CustomerProfileType customerPT = new CustomerProfileType(); customerPT.merchantCustomerId = customer.Id.ToString(); customerPT.email = customer.Email; customerPT.paymentProfiles = new CustomerPaymentProfileType[1]; CustomerPaymentProfileType customerPPT = new CustomerPaymentProfileType(); customerPPT.customerType = CustomerTypeEnum.individual; customerPPT.customerTypeSpecified = true; customerPPT.billTo = new CustomerAddressType() { firstName = customer.FirstName, lastName = customer.LastName, address = customer.Address, city = customer.City, country = "USA", state = customer.StateId, zip = customer.ZipCode }; CreditCardType ccT = new CreditCardType(); ccT.cardNumber = cc.CardNumber; ccT.expirationDate = cc.ExpDate; ccT.cardCode = cc.CVV; PaymentType payment = new PaymentType(); payment.Item = ccT; customerPPT.payment = payment; customerPT.paymentProfiles[0] = customerPPT; ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; ServiceSoapClient client = new ServiceSoapClient(); CreateCustomerProfileResponseType resp = client.CreateCustomerProfile(merchantAT, customerPT, ValidationModeEnum.testMode); customerProfileId = resp.customerProfileId; customerPaymentProfileId = resp.customerPaymentProfileIdList.Length == 1 ? resp.customerPaymentProfileIdList[0] : 0; if (resp.resultCode != MessageTypeEnum.Ok) { string errorValidate = resp.validationDirectResponseList != null && resp.validationDirectResponseList.Count() > 0 ? resp.validationDirectResponseList.ToList().Aggregate((a, b) => a + " || " + b) : string.Empty; string error = resp.messages != null && resp.messages.Count() > 0 ? resp.messages.ToList().Select(a => a.text).Aggregate((a, b) => a + " || " + b) : string.Empty; LoggingUtilities.Logger.LogEntry("Resp Error code:" + resp.resultCode.ToString() + ". Errors: " + error + "Error V: " + errorValidate); } return(resp.resultCode == MessageTypeEnum.Ok); /* } * * else * { * customerProfileId = 1; * customerPaymentProfileId = 1; * return true; * }*/ }
public static void ProcessInvoices() { using (CastleClubEntities entities = new CastleClubEntities()) { if (CastleClub.BusinessLogic.Data.GlobalParameters.Procces) { int maxFailCount = CastleClub.BusinessLogic.Data.GlobalParameters.FailCount; int yearMin = CastleClub.BusinessLogic.Data.GlobalParameters.YearMin; DateTime min = new DateTime(yearMin, 1, 1); List <Invoice> list = entities.Invoices.Where(i => (i.Customer.CancelledDate == null) && (i.CreatedAt >= min) && (!i.FailCount.HasValue || i.FailCount.Value < maxFailCount) && (i.StatusId == InvoiceStatus.NEW.ToString() || i.StatusId == InvoiceStatus.BILLEDFAIL.ToString())).ToList(); foreach (Invoice invoice in list) { try { SiteDT siteDT = invoice.Customer.Site.GetDT(); InvoiceDT invoiceDT = invoice.GetDT(); CustomerDT customerDT = invoice.Customer.GetDT(false); CreditCardDT creditCardDT = invoice.Customer.CreditCards.FirstOrDefault().GetDT(); Transaction transaction = new Transaction(); transaction.InvoiceId = invoiceDT.Id; transaction.CreditCardId = creditCardDT.Id; transaction.AuthorizeTransactionId = 0; transaction.TypeId = TransactionType.SALE.ToString(); transaction.StatusId = TransactionStatus.FAILED.ToString(); transaction.SubmitDate = DateTime.Now; entities.Transactions.Add(transaction); entities.SaveChanges(); long transactionId = 0; string message = ""; string code = string.Empty; bool succesfull = CIM.CreateCustomerProfileTransactionAuthCapture(siteDT, invoiceDT, customerDT, creditCardDT, out transactionId, out message, out code); if (succesfull) { invoice.Status = InvoiceStatus.BILLED; invoice.BilledDate = DateTime.Now; transaction.Status = TransactionStatus.SUCCESFULL; transaction.AuthorizeTransactionId = transactionId; invoice.Customer.Referrer.BilledTotal++; invoice.Customer.Referrer.RevenueAmount += invoice.Amount; entities.SaveChanges(); } else { invoice.FailCount = invoice.FailCount.HasValue ? invoice.FailCount.Value + 1 : 1; transaction.Message = message + code; invoice.Status = InvoiceStatus.BILLEDFAIL; entities.SaveChanges(); if (invoice.FailCount >= maxFailCount && entities.NotificationProcess.Any()) { //To do some. //Send email for notification. string smtpAddress = CastleClub.BusinessLogic.Data.GlobalParameters.Smtp; int portNumber = 587; bool enableSSL = true; string emailFrom = CastleClub.BusinessLogic.Data.GlobalParameters.EmailAccount; string password = CastleClub.BusinessLogic.Data.GlobalParameters.EmailPassword; string subject = "Error an ocurred with invoice: " + invoiceDT.Id; string body = "Error ocurred at " + maxFailCount + " time with invoice: " + invoiceDT.Id + ", customerId: " + invoice.CustomerId + ", and with credit card: " + invoice.Customer.CreditCards.FirstOrDefault().Id; using (System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage()) { mail.From = new MailAddress(emailFrom); foreach (var emailTo in entities.NotificationProcess) { mail.To.Add(emailTo.To); } mail.Subject = subject; mail.Body = body; mail.IsBodyHtml = false; using (SmtpClient smtp = new SmtpClient(smtpAddress, portNumber)) { smtp.Credentials = new NetworkCredential(emailFrom, password); smtp.EnableSsl = enableSSL; smtp.Send(mail); } } } } } catch (Exception ex) { Utils.EventViewer.Writte("CastleClubAdmin", "PaymentTask - Process", ex.ToString(), System.Diagnostics.EventLogEntryType.Error); } } } } }