Ejemplo n.º 1
0
        public void Start()
        {
            string pathToInstallCommands = EnvironmentEx.AppDataFolder + "\\Install\\install.json";

            if (File.Exists(pathToInstallCommands))
            {
                Status            = "REQUIRES_INSTALL";
                UseDatabaseConfig = false;
                return;
            }

            UseDatabaseConfig = false;

            //need to get the connection key and connection string from the web.config
            Globals.DBConnectionKey = AppSetting("DefaultDbConnection", "MSSQL");

            UseDatabaseConfig = true;//default to true  don't keep up dating the web.config

            if (ConfigurationManager.AppSettings["UseDatabaseConfig"] != null)
            {
                UseDatabaseConfig = StringEx.ConvertTo <bool>(ConfigurationManager.AppSettings["UseDatabaseConfig"].ToString());
            }

            // todo get setting for  data limit multiplier. default is 25
            //    Globals.DefaultDataFilter

            this.ApiStatus = AppSetting("ApiStatus", "PRIVATE");
            Globals.AddRequestPermissions = StringEx.ConvertTo <bool>(Globals.Application.ConnectionString("AddRequestPermissions", "false"));

            Status      = "RUNNING";
            Initialized = true;
        }
Ejemplo n.º 2
0
 public WebApplication()
 {
     Initialized = false;
     if (ConfigurationManager.AppSettings["UseDatabaseConfig"] != null)
     {
         UseDatabaseConfig = StringEx.ConvertTo <bool>(ConfigurationManager.AppSettings["UseDatabaseConfig"].ToString());
     }
 }
Ejemplo n.º 3
0
        public async Task <ServiceResult> SendMessageAsync()
        {
            if (CurrentUser == null)
            {
                return(ServiceResponse.Error("You must be logged in to access this function."));
            }


            string emailTo = "";

            try
            {
                string body = await ActionContext.Request.Content.ReadAsStringAsync();

                if (string.IsNullOrEmpty(body))
                {
                    return(ServiceResponse.Error("You must send valid email info."));
                }

                dynamic formData = JsonConvert.DeserializeObject <dynamic>(body);

                if (formData == null)
                {
                    return(ServiceResponse.Error("Invalid email info."));
                }

                if (formData.MessageType == "ContactAdmin")
                {
                    if (string.IsNullOrWhiteSpace(Globals.Application.AppSetting("SiteEmail", "")))
                    {
                        return(ServiceResponse.Error("Site email is not set."));
                    }
                    emailTo = Globals.Application.AppSetting("SiteEmail", "");
                }

                EmailSettings settings = new EmailSettings();
                settings.EncryptionKey = Globals.Application.AppSetting("AppKey");
                settings.HostPassword  = Globals.Application.AppSetting("EmailHostPassword");
                settings.HostUser      = Globals.Application.AppSetting("EmailHostUser");
                settings.MailHost      = Globals.Application.AppSetting("MailHost");
                settings.MailPort      = StringEx.ConvertTo <int>(Globals.Application.AppSetting("MailPort"));
                settings.SiteDomain    = Globals.Application.AppSetting("SiteDomain");
                settings.SiteEmail     = Globals.Application.AppSetting("SiteEmail");
                settings.UseSSL        = StringEx.ConvertTo <bool>(Globals.Application.AppSetting("UseSSL"));

                string      ip          = network.GetClientIpAddress(this.Request);
                string      Subject     = formData.Subject.ToString();
                string      msg         = formData.Message.ToString();
                UserManager userManager = new UserManager(Globals.DBConnectionKey, Request.Headers?.Authorization?.Parameter);

                return(await userManager.SendEmailAsync(ip, emailTo, CurrentUser.Email, Subject, msg, settings));
            }
            catch (Exception ex)
            {
                Debug.Assert(false, ex.Message);
                return(ServiceResponse.Error(ex.Message));
            }
        }
Ejemplo n.º 4
0
        public WebApplication(string connectionKey)
        {
            _dbConnectionKey = connectionKey;
            _logger          = new SystemLogger(_dbConnectionKey);

            if (ConfigurationManager.AppSettings["UseDatabaseConfig"] != null)
            {
                UseDatabaseConfig = StringEx.ConvertTo <bool>(ConfigurationManager.AppSettings["UseDatabaseConfig"].ToString());
            }
        }
Ejemplo n.º 5
0
        private int GetSessionLength()
        {
            int length = 30;

            try
            {
                using (var context = new GreenWerxDbContext(this._connectionKey))
                {
                    Setting s = context.GetAll <Setting>()?.FirstOrDefault(sw => (sw.Name?.EqualsIgnoreCase("SESSIONLENGTH") ?? false));
                    return(StringEx.ConvertTo <int>(s?.Value ?? "30"));
                }
            }
            catch (Exception ex)
            {
                _logger.InsertError(ex.Message, "SessionManager", "GetSessionLength");
                return(length);
            }
        }
Ejemplo n.º 6
0
        public INode Get()
        {
            if (_node == null)
            {
                return(_node);
            }

            _node.Name   = txtName.Text;
            _node.Status = txtStatus.Text;

            _node.SortOrder  = StringEx.ConvertTo <int>(txtSortOrder.Text);
            _node.RoleWeight = StringEx.ConvertTo <int>(txtRoleWeight.Text);

            _node.Active  = chkActive.Checked;
            _node.Deleted = chkDeleted.Checked;
            _node.Private = chkPrivate.Checked;

            _node.RoleOperation = cboRoleOperation.Text;
            return(_node);
        }
Ejemplo n.º 7
0
        public async Task <ServiceResult> ReSendValidationEmail(string userUUID)
        {
            if (string.IsNullOrWhiteSpace(userUUID))
            {
                return(ServiceResponse.Error("Invalid user id."));
            }

            UserManager userManager = new UserManager(Globals.DBConnectionKey, Request.Headers?.Authorization?.Parameter);
            User        user        = (User)userManager.GetBy(userUUID);

            if (user == null)
            {
                return(ServiceResponse.Error("User not found!"));
            }

            NetworkHelper network  = new NetworkHelper();
            string        ip       = network.GetClientIpAddress(this.Request);
            EmailSettings settings = new EmailSettings();

            settings.HostPassword  = Globals.Application.AppSetting("EmailHostPassword");
            settings.EncryptionKey = Globals.Application.AppSetting("AppKey");
            settings.HostUser      = Globals.Application.AppSetting("EmailHostUser");
            settings.MailHost      = Globals.Application.AppSetting("MailHost");
            settings.MailPort      = StringEx.ConvertTo <int>(Globals.Application.AppSetting("MailPort"));
            settings.SiteDomain    = Globals.Application.AppSetting("SiteDomain");
            settings.SiteEmail     = Globals.Application.AppSetting("SiteEmail");
            settings.UseSSL        = StringEx.ConvertTo <bool>(Globals.Application.AppSetting("UseSSL"));

            ServiceResult res = await userManager.SendUserEmailValidationAsync(user, user.ProviderUserKey, ip, settings);

            if (res.Code == 200)
            {
                return(ServiceResponse.Error("Verification email will be sent. Please follow the instructions in the email. Check your spam/junk folder for the confirmation email if you have not received it."));
            }
            else
            {
                return(ServiceResponse.Error("Failed to resend validation email. Try again later."));
            }
        }
Ejemplo n.º 8
0
        public async Task <ServiceResult> SendAccountValidationEmailAsync(SendAccountInfoForm frm)
        {
            if (frm == null)
            {
                return(ServiceResponse.Error("Invalid form sent to server."));
            }

            if (string.IsNullOrWhiteSpace(frm.Email))
            {
                return(ServiceResponse.Error("All fields must be filled out!"));
            }

            NetworkHelper network     = new NetworkHelper();
            UserManager   userManager = new UserManager(Globals.DBConnectionKey, Request.Headers?.Authorization?.Parameter);

            User u = userManager.GetUserByEmail(frm.Email, false);

            if (u == null)
            {
                return(ServiceResponse.OK("Email sent."));//return ok so the client can't fish for members.
            }
            u.ProviderUserKey = Cipher.RandomString(12);

            if (userManager.SetUserFlag(u.UUID, "PROVIDERUSERKEY", u.ProviderUserKey, false).Code != 200)
            {
                return(ServiceResponse.Error("Unable to send email."));
            }

            if (frm.ForgotPassword)
            {
                u.ProviderName = UserFlags.ProviderName.ForgotPassword;
            }
            else
            {
                u.ProviderName = UserFlags.ProviderName.SendAccountInfo;
            }

            ServiceResult updateResult = userManager.SetUserFlag(u.UUID, "PROVIDERNAME", u.ProviderName, false);

            if (updateResult.Code != 200)
            {
                return(updateResult);
            }

            EmailSettings settings = new EmailSettings();

            settings.EncryptionKey = Globals.Application.AppSetting("AppKey");
            settings.HostPassword  = Globals.Application.AppSetting("EmailHostPassword");
            settings.HostUser      = Globals.Application.AppSetting("EmailHostUser");
            settings.MailHost      = Globals.Application.AppSetting("MailHost");
            settings.MailPort      = StringEx.ConvertTo <int>(Globals.Application.AppSetting("MailPort"));
            settings.SiteDomain    = Globals.Application.AppSetting("SiteDomain");
            settings.SiteEmail     = Globals.Application.AppSetting("SiteEmail");
            settings.UseSSL        = StringEx.ConvertTo <bool>(Globals.Application.AppSetting("UseSSL"));
            string ipAddress = network.GetClientIpAddress(this.Request);

            if (frm.ForgotPassword)
            {
                return(await userManager.SendPasswordResetEmailAsync(u, ipAddress, settings));
            }
            return(await userManager.SendUserInfoAsync(u, network.GetClientIpAddress(this.Request), settings));
        }
Ejemplo n.º 9
0
        public async Task <ServiceResult> SendMessage(Message form)//        public  ServiceResult SendMessage(Message form)
        {
            if (form == null)
            {
                return(ServiceResponse.Error("No form was posted to the server."));
            }


            form.DateSent = DateTime.UtcNow;

            bool isValidFormat = Validator.IsValidEmailFormat(form.SentFrom);

            if (string.IsNullOrWhiteSpace(form.SentFrom) || isValidFormat == false)
            {
                ServiceResponse.Error("You must provide a valid email address.");
            }

            if (string.IsNullOrWhiteSpace(form.Comment))
            {
                ServiceResponse.Error("You must provide a message.");
            }
            NetworkHelper network   = new NetworkHelper();
            string        ipAddress = network.GetClientIpAddress(this.Request);

            EmailLog emailLog = new EmailLog();

            emailLog.Message   = form.Comment + "<br/><br/><br/>Message Key:" + emailLog.UUID;
            emailLog.Subject   = form.Subject;
            emailLog.EmailFrom = form.SentFrom;
            emailLog.UUIDType += "." + form.Type;

            if (form.Type?.ToLower() != "contactus")
            {
                emailLog.EmailTo = Globals.Application.AppSetting("SiteEmail");
            }

            emailLog.DateCreated = DateTime.UtcNow;
            emailLog.IpAddress   = ipAddress;
            emailLog.Status      = "not_sent";

            if (CurrentUser != null)
            {
                emailLog.CreatedBy   = CurrentUser.UUID;
                emailLog.AccountUUID = CurrentUser.AccountUUID;
            }
            else
            {
                emailLog.CreatedBy   = "ContactUsForm";
                emailLog.AccountUUID = "ContactUsForm";
            }

            EmailLogManager emailLogManager = new EmailLogManager(Globals.DBConnectionKey);

            if (emailLogManager.Insert(emailLog).Code == 500)
            {
                return(ServiceResponse.Error("Failed to save the email. Try again later."));
            }

            EmailSettings settings = new EmailSettings();

            settings.EncryptionKey = Globals.Application.AppSetting("AppKey");
            settings.HostPassword  = Globals.Application.AppSetting("EmailHostPassword");
            settings.HostUser      = Globals.Application.AppSetting("EmailHostUser");
            settings.MailHost      = Globals.Application.AppSetting("MailHost");
            settings.MailPort      = StringEx.ConvertTo <int>(Globals.Application.AppSetting("MailPort"));
            settings.SiteDomain    = Globals.Application.AppSetting("SiteDomain");
            settings.SiteEmail     = Globals.Application.AppSetting("SiteEmail");
            settings.UseSSL        = StringEx.ConvertTo <bool>(Globals.Application.AppSetting("UseSSL"));

            MailAddress ma   = new MailAddress(form.SentFrom, form.SentFrom);
            MailMessage mail = new MailMessage();

            mail.From = ma;
            mail.ReplyToList.Add(ma);
            mail.To.Add(emailLog.EmailTo);
            mail.Subject    = emailLog.Subject;
            mail.Body       = emailLog.Message + "<br/><br/><br/>IP:" + ipAddress;
            mail.IsBodyHtml = true;
            SMTP svc = new SMTP(Globals.DBConnectionKey, settings);

            return(await svc.SendMailAsync(mail));
        }
Ejemplo n.º 10
0
        public async Task <ServiceResult> SendMessage(EmailMessage form)//        public  ServiceResult SendMessage(Message form)
        {
            if (form == null)
            {
                return(ServiceResponse.Error("No form was posted to the server."));
            }

            try
            {
                form.DateSent = DateTime.UtcNow;

                bool isValidFormat = Validator.IsValidEmailFormat(form.EmailFrom);
                if (string.IsNullOrWhiteSpace(form.EmailFrom) || isValidFormat == false)
                {
                    return(ServiceResponse.Error("You must provide a valid email address."));
                }

                if (string.IsNullOrWhiteSpace(form.Body))
                {
                    return(ServiceResponse.Error("You must provide a message."));
                }
                EmailMessageManager EmailMessageManager = new EmailMessageManager(Globals.DBConnectionKey, Request?.Headers?.Authorization?.Parameter);
                NetworkHelper       network             = new NetworkHelper();
                string ipAddress = network.GetClientIpAddress(this.Request);

                EmailMessage EmailMessage = new EmailMessage();
                EmailMessage.Body      = form.Body + "<br/><br/><br/>Message Key:" + EmailMessage.UUID;
                EmailMessage.Subject   = form.Subject;
                EmailMessage.EmailFrom = Cipher.Crypt(Globals.Application.AppSetting("AppKey"), form.EmailFrom.ToLower(), true);
                EmailMessage.UUIDType += "." + form.Type;

                if (form.Type?.ToLower() != "contactus")
                {
                    EmailMessage.EmailTo = Globals.Application.AppSetting("SiteEmail");
                }

                EmailMessage.DateCreated = DateTime.UtcNow;
                EmailMessage.IpAddress   = ipAddress;
                EmailMessage.Status      = "not_sent";

                if (CurrentUser != null)
                {
                    EmailMessage.CreatedBy   = CurrentUser.UUID;
                    EmailMessage.AccountUUID = CurrentUser.AccountUUID;
                }
                else
                {
                    EmailMessage.CreatedBy   = "ContactUsForm";
                    EmailMessage.AccountUUID = "ContactUsForm";
                }

                UserManager um       = new UserManager(Globals.DBConnectionKey, Request?.Headers?.Authorization?.Parameter);
                string      toName   = um.GetUserByEmail(EmailMessage.EmailTo)?.Name;
                string      fromName = um.GetUserByEmail(form.EmailFrom)?.Name;
                EmailMessage.NameFrom = fromName;
                EmailMessage.NameTo   = toName;

                if (EmailMessageManager.Insert(EmailMessage).Code == 500)
                {
                    return(ServiceResponse.Error("Failed to save the email. Try again later."));
                }

                EmailSettings settings = new EmailSettings();
                settings.EncryptionKey = Globals.Application.AppSetting("AppKey");
                settings.HostPassword  = Globals.Application.AppSetting("EmailHostPassword");
                settings.HostUser      = Globals.Application.AppSetting("EmailHostUser");
                settings.MailHost      = Globals.Application.AppSetting("MailHost");
                settings.MailPort      = StringEx.ConvertTo <int>(Globals.Application.AppSetting("MailPort"));
                settings.SiteDomain    = Globals.Application.AppSetting("SiteDomain");
                settings.EmailDomain   = Globals.Application.AppSetting("EmailDomain");
                settings.SiteEmail     = Globals.Application.AppSetting("SiteEmail");
                settings.UseSSL        = StringEx.ConvertTo <bool>(Globals.Application.AppSetting("UseSSL"));

                MailAddress ma   = new MailAddress(settings.SiteEmail, settings.SiteEmail);
                MailMessage mail = new MailMessage();
                mail.From = ma;
                // mail.ReplyToList.Add( ma );
                mail.ReplyToList.Add(form.EmailFrom);
                mail.To.Add(EmailMessage.EmailTo);
                mail.Subject    = EmailMessage.Subject;
                mail.Body       = EmailMessage.Body + "<br/><br/><br/>IP:" + ipAddress;
                mail.IsBodyHtml = true;
                SMTP svc = new SMTP(Globals.DBConnectionKey, settings);
                return(svc.SendMail(mail));
            }
            catch (Exception ex)
            {
                _fileLogger.InsertError(ex.DeserializeException(true), "SiteController", "SendMessage:" + JsonConvert.SerializeObject(form));
            }
            return(ServiceResponse.Error("Failed to send message."));
        }
Ejemplo n.º 11
0
        private ServiceResult SendEmail(CartView cart, Order order, FinanceAccount account, string customerEmail, string status)
        {
            if (cart == null)
            {
                return(ServiceResponse.Error("Could not send email, cart was not set."));
            }

            AppManager am           = new AppManager(this._connectionKey, "web", this._sessionKey);
            string     domain       = am.GetSetting("SiteDomain")?.Value;
            string     emailSubject = "";
            string     emailContent = "";

            //todo put this in another function
            #region get email content function

            switch (status)
            {
            case StoreFlag.OrderStatus.Recieved:
                emailSubject = "Your " + domain + " order has been recieved.";

                DocumentManager dm = new DocumentManager(this._connectionKey, SessionKey);
                emailContent = dm.GetTemplate("EmailOrderReceived").Result?.ToString();

                if (string.IsNullOrWhiteSpace(emailContent))
                {
                    return(ServiceResponse.Error("Failed to send email. Document not found."));
                }

                //use view cart for details
                emailContent = emailContent.Replace("[Order.OrderID]", order.UUID);
                emailContent = emailContent.Replace("[Order.AddedDate]", order.DateCreated.ToShortDateString());
                //See below: emailContent = emailContent.Replace( "[Order.Total]"                  ,
                emailContent = emailContent.Replace("[PaymentType.Title]", cart.PaidType);
                emailContent = emailContent.Replace("[StoreManager.PayType]", account.CurrencyName);
                emailContent = emailContent.Replace("[StoreManager.PayTypeTotal]", order.Total.ToString());
                //emailContent = emailContent.Replace( "                               ,PayTypeSubTotal);
                // emailContent = emailContent.Replace("[PayType.Address]", account. PayType.Address);
                emailContent = emailContent.Replace("[PayType.PictureUrl]", account.Image);
                emailContent = emailContent.Replace("[Settings.CurrencySymbol]", am.GetSetting("default.currency.symbol").Value);
                emailContent = emailContent.Replace("[Settings.SiteDomain]", domain);

                //todo  paytype.address and qr code for btc.
                //todo bookmark latest currency symbol
                // string validationCode = Cipher.RandomString(12);
                //   emailContent = emailContent.Replace("[Url.Unsubscribe]", "http://" + domain + "/FinanceAccount/ValidateEmail/?type=mbr&operation=mdel&code=" + validationCode);

                StringBuilder ShoppingCartItemsList = new StringBuilder();

                foreach (dynamic item in cart.CartItems)
                {
                    ShoppingCartItemsList.Append("<tr id=\"[item-ShoppingCartItem.Product.Id]\">".Replace("[item-ShoppingCartItem.Product.ProductID]", item.ItemUUID.ToString()));
                    ShoppingCartItemsList.Append("<td align=\"center\">[ShoppingCartItem.Title]</td>".Replace("[ShoppingCartItem.Title]", item.Name.ToString()));
                    ShoppingCartItemsList.Append("<td align=\"center\">[ShoppingCartItem.Quantity]</td>".Replace("[ShoppingCartItem.Quantity]", item.Quantity.ToString()));
                    ShoppingCartItemsList.Append("<td align=\"center\">[ShoppingCartItem.Price]</td></tr>".Replace("[ShoppingCartItem.Price]", item.Price.ToString("c")));
                }

                emailContent = emailContent.Replace("[ShoppingCartItemsList]", ShoppingCartItemsList.ToString());
                emailContent = emailContent.Replace("[Order.SubTotal]", order.SubTotal.ToString("c"));
                emailContent = emailContent.Replace("[Order.Total]", order.Total.ToString("c"));
                #endregion
                break;
            }
            string appKey        = am.GetSetting("AppKey")?.Value;
            string emailPassword = am.GetSetting("EmailHostPassword")?.Value;

            SMTP mailServer = new SMTP(this._connectionKey, new Models.Services.EmailSettings()
            {
                HostPassword  = Cipher.Crypt(appKey, emailPassword, false),
                EncryptionKey = am.GetSetting("AppKey")?.Value,
                HostUser      = am.GetSetting("EmailHostUser")?.Value,
                MailHost      = am.GetSetting("MailHost")?.Value,
                MailPort      = StringEx.ConvertTo <int>(am.GetSetting("MailPort")?.Value),
                SiteDomain    = am.GetSetting("SiteDomain")?.Value,
                SiteEmail     = am.GetSetting("SiteEmail")?.Value,
                UseSSL        = StringEx.ConvertTo <bool>(am.GetSetting("UseSSL")?.Value)
            });
            MailMessage mail = new MailMessage();
            try
            {
                mail.From = new MailAddress(am.GetSetting("SiteEmail")?.Value);
                mail.ReplyToList.Add(mail.From);
                mail.To.Add(customerEmail);
                mail.Subject    = emailSubject;
                mail.Body       = emailContent;
                mail.IsBodyHtml = true;
            }
            catch (Exception ex)
            {
                Debug.Assert(false, ex.Message);
                this._logger.InsertError(ex.Message, "StoreManager", "SendMail");
                return(ServiceResponse.Error("Failed to send email. "));
            }

            ServiceResult res = mailServer.SendMail(mail);
            if (res.Code != 200)
            {
                Debug.Assert(false, mailServer.ErrorMessage);
                this._logger.InsertError(mailServer.ErrorMessage, "StoreManager", "SendMail");
                return(ServiceResponse.Error("Failed to send email. "));
            }
            return(ServiceResponse.OK());
        }
Ejemplo n.º 12
0
        private PayPalResponse DeserializeIpn(string response)
        {
            if (string.IsNullOrWhiteSpace(response))
            {
                return(null);
            }

            PayPalResponse res = new PayPalResponse();

            string[] kvp = response.Split('&');

            if (kvp.Length == 0)
            {
                return(null);
            }

            for (int i = 0; i < kvp.Length; i++)
            {
                try
                {
                    string[] tokens = kvp[i].Split('=');

                    if (tokens.Length < 2)
                    {
                        continue;
                    }

                    string key   = tokens[0].Trim().ToLower();
                    string value = tokens[1].Trim();

                    if (string.IsNullOrWhiteSpace(key) || string.IsNullOrWhiteSpace(value))
                    {
                        continue;
                    }
                    switch (key)
                    {
                    case "mc_gross": res.mc_gross = StringEx.ConvertTo <decimal>(value); break;

                    case "protection_eligibility": res.protection_eligibility = value; break;

                    case "address_status": res.address_status = value; break;

                    case "payer_id": res.payer_id = value; break;

                    case "tax": res.tax = StringEx.ConvertTo <decimal>(value); break;

                    case "address_street": res.address_street = value; break;

                    case "payment_date":   res.payment_date = value; break;

                    case "payment_status": res.payment_status = value; break;

                    case "charset":        res.charset = value; break;

                    case "address_zip":    res.address_zip = value; break;

                    case "first_name":     res.first_name = value; break;

                    case "mc_fee": res.mc_fee = StringEx.ConvertTo <decimal>(value); break;

                    case "address_country_code":        res.address_country_code = value; break;

                    case "address_name":   res.address_name = value; break;

                    case "notify_version": res.notify_version = StringEx.ConvertTo <float>(value); break;

                    case "custom": res.custom = value; break;           //this is set to the cartUUID, the Order has a cartUUID field. Pull the order and update all the tables. see StoreManager.ProcessPayment() to figure out all the tables to update

                    case "payer_status":   res.payer_status = value; break;

                    case "address_country": res.address_country = value; break;

                    case "address_city":   res.address_city = value; break;

                    case "quantity":       res.quantity = StringEx.ConvertTo <int>(value); break;

                    case "verify_sign":    res.verify_sign = value; break;

                    case "payer_email":    res.payer_email = value; break;

                    case "txn_id": res.txn_id = value; break;

                    case "payment_type":   res.payment_type = value; break;

                    case "last_name":      res.last_name = value; break;

                    case "address_state":  res.address_state = value; break;

                    case "receiver_email": res.receiver_email = value; break;

                    case "payment_fee":    res.payment_fee = StringEx.ConvertTo <decimal>(value); break;

                    case "receiver_id":    res.receiver_id = value; break;

                    case "txn_type":       res.txn_type = value; break;

                    case "item_name":      res.item_name = value; break;

                    case "mc_currency":    res.mc_currency = value; break;

                    case "item_number":    res.item_number = value; break;

                    case "residence_country": res.residence_country = value; break;

                    case "test_ipn":       res.test_ipn = value; break;

                    case "handling_amount": res.handling_amount = StringEx.ConvertTo <decimal>(value); break;

                    case "transaction_subject": res.transaction_subject = value; break;

                    case "payment_gross":  res.payment_gross = StringEx.ConvertTo <decimal>(value); break;

                    case "shipping": res.shipping = StringEx.ConvertTo <decimal>(value); break;
                    }
                }
                catch (Exception ex)
                {
                    Debug.Assert(false, ex.Message);
                    _logger.InsertError(ex.Message + " index:" + i.ToString() + " response:" + response, "PaymentGatewayManager", "DeserializeIpn");
                    continue;
                }
            }

            return(res);
        }
Ejemplo n.º 13
0
        public async Task <ServiceResult> SendEmailAsync()
        {
            var    app     = new AppManager(Globals.DBConnectionKey, "web", "");
            string secret  = app.GetSetting("AppKey")?.Value;
            var    gsecred = Globals.Application.AppSetting("AppKey");

            if (gsecred != secret)
            {
                throw new NotImplementedException();
            }

            var encemail = Cipher.Crypt(secret, "*****@*****.**".ToLower(), true);

            encemail = Cipher.Crypt(secret, "*****@*****.**".ToLower(), true);
            encemail = Cipher.Crypt(secret, "*****@*****.**".ToLower(), true);
            encemail = Cipher.Crypt(secret, "*****@*****.**".ToLower(), true);

            if (CurrentUser == null)
            {
                return(ServiceResponse.Error("You must be logged in to access this function."));
            }

            EmailSettings settings = new EmailSettings();

            settings.FromUserUUID = CurrentUser.UUID;

            try
            {
                string content = await Request.Content.ReadAsStringAsync();

                if (string.IsNullOrEmpty(content))
                {
                    return(ServiceResponse.Error("You must send valid email info."));
                }

                var message = JsonConvert.DeserializeObject <EmailMessage>(content);

                if (string.IsNullOrWhiteSpace(message.SendTo))
                {
                    return(ServiceResponse.Error("You must send a user id for the message."));
                }

                if (string.IsNullOrWhiteSpace(message.Body))
                {
                    return(ServiceResponse.Error("You must send comment in the message."));
                }

                UserManager userManager = new UserManager(Globals.DBConnectionKey, Request.Headers?.Authorization?.Parameter);

                switch (message.Type?.ToUpper())
                {
                case "ACCOUNT":
                    var am  = new AccountManager(Globals.DBConnectionKey, Request.Headers?.Authorization?.Parameter);
                    var res = am.Get(message.SendTo);
                    if (res.Code != 200)
                    {
                        return(res);
                    }
                    // Account account = (Account)res.Result;

                    break;

                case "SUPPORT":
                    //todo call api/Site/SendMessage

                    break;

                case "USER":

                    var resUserTO = userManager.Get(message.SendTo);
                    if (resUserTO == null || resUserTO.Code != 200)
                    {
                        return(ServiceResponse.Error("User not found for user uuid."));
                    }

                    var userTO = (User)resUserTO.Result;     // THIS SHOULD BE sand, EMAILLOG.userUUID should be this.
                    if (message.SendTo != userTO.UUID)
                    {
                        return(ServiceResponse.Error("User id doesn't match the addressed user id."));
                    }

                    //if (message.SendFrom != CurrentUser.UUID)
                    //    return ServiceResponse.Error("Current user doesn't match logged in user."); //may just set the from user = currentuser
                    break;

                case "PROFILE":
                    ProfileManager profileManager = new ProfileManager(Globals.DBConnectionKey, Request.Headers?.Authorization?.Parameter);
                    var            dbProfile      = profileManager.Get(message.SendTo);
                    if (dbProfile.Code != 200)
                    {
                        return(ServiceResponse.Error("Profile not found."));
                    }

                    var node = userManager.Get(((Profile)dbProfile.Result).UserUUID);
                    if (node.Code != 200)
                    {
                        return(node);
                    }

                    var user = (User)node.Result;
                    settings.ToUserUUID = user.UUID;

                    if (string.IsNullOrWhiteSpace(message.Subject))
                    {
                        message.Subject = "You have received a message from " + CurrentUser.Name;
                    }
                    break;

                default:

                    var res2 = userManager.GetUser(message.SendTo, false);
                    if (res2.Code != 200)
                    {
                        return(res2);
                    }

                    var toUser = (User)res2.Result;

                    if (toUser == null)
                    {
                        return(ServiceResponse.Error("User not found."));
                    }

                    settings.ToUserUUID = toUser.UUID;
                    break;
                }

                string hostPassword = Cipher.Crypt(Globals.Application.AppSetting("AppKey"), Globals.Application.AppSetting("EmailHostPassword"), false);

                settings.EncryptionKey = Globals.Application.AppSetting("AppKey");
                settings.HostPassword  = hostPassword;// Globals.Application.AppSetting("EmailHostPassword");
                settings.HostUser      = Globals.Application.AppSetting("EmailHostUser");
                settings.MailHost      = Globals.Application.AppSetting("MailHost");
                settings.MailPort      = StringEx.ConvertTo <int>(Globals.Application.AppSetting("MailPort"));
                settings.SiteDomain    = Globals.Application.AppSetting("SiteDomain");
                settings.EmailDomain   = Globals.Application.AppSetting("EmailDomain");
                settings.SiteEmail     = Globals.Application.AppSetting("SiteEmail");
                settings.UseSSL        = StringEx.ConvertTo <bool>(Globals.Application.AppSetting("UseSSL"));

                message.IpAddress = network.GetClientIpAddress(this.Request);
                return(await userManager.SendEmailAsync(message, settings));
            }
            catch (Exception ex)
            {
                Debug.Assert(false, ex.Message);
                return(ServiceResponse.Error("Failed to send message.", ex.DeserializeException()));
            }
        }
Ejemplo n.º 14
0
        public ServiceResult SetUserFlag(string userUUID, string userFlag, string flagValue, bool authorize = true)
        {
            User u;

            using (var context = new TreeMonDbContext(this._connectionKey))
            {
                u = context.GetAll <User>().FirstOrDefault(uw => uw.UUID == userUUID);
            }

            if (u == null)
            {
                return(ServiceResponse.Error("User not found."));
            }

            if (authorize)
            {
                if (!this.DataAccessAuthorized(u, "PATCH", false))
                {
                    return(ServiceResponse.Error("You are not authorized this action."));
                }
            }

            if (string.IsNullOrWhiteSpace(userFlag) || string.IsNullOrWhiteSpace(flagValue))
            {
                return(ServiceResponse.Error("You are missing a flag or value to set."));
            }

            switch (userFlag.ToUpper())
            {  // CTRL+SHIFT+U. to toggle case
            case "PROVIDERNAME":
                u.ProviderName = flagValue;
                break;

            case "PROVIDERUSERKEY":
                u.ProviderUserKey = flagValue;
                break;

            case "ACTIVE":
                u.Active = StringEx.ConvertTo <bool>(flagValue);
                break;

            case "DELETED":
                u.Deleted = StringEx.ConvertTo <bool>(flagValue);
                break;

            case "PRIVATE":
                u.Private = StringEx.ConvertTo <bool>(flagValue);
                break;

            case "ANONYMOUS":
                u.Anonymous = StringEx.ConvertTo <bool>(flagValue);
                break;

            case "APPROVED":
                u.Approved = StringEx.ConvertTo <bool>(flagValue);
                break;

            case "BANNED":
                u.Banned = StringEx.ConvertTo <bool>(flagValue);
                break;

            case "LOCKEDOUT":
                u.LockedOut = StringEx.ConvertTo <bool>(flagValue);
                if (u.LockedOut == true)
                {
                    u.LastLockoutDate = DateTime.UtcNow;
                }
                break;

            case "ONLINE":
                u.Online = StringEx.ConvertTo <bool>(flagValue);
                break;

            //case "SITEADMIN": break;// backlog this requires security validation before implementing since its a very powerfull account
            default:
                return(ServiceResponse.Error("Invalid flag."));
            }
            u.LastUpdatedDate = DateTime.UtcNow;
            using (var context = new TreeMonDbContext(this._connectionKey))
            {
                if (context.Update <User>(u) < 0)
                {
                    return(ServiceResponse.Error("Error occurred saving user " + u.Name));
                }
            }

            _logger.InsertInfo("userUUID:" + userUUID + ",userFlag:" + userFlag + ",flagValue:" + flagValue, "UserManager", "SetUserFlag");

            return(ServiceResponse.OK("User " + u.Name + " updated."));
        }