public ActionResult Index()
        {
            var currentsite = SiteCacher.CurrentSite;

            using (CurrentSiteSettings settings = new CurrentSiteSettings(currentsite))
            {
                _viewModel.CMSPage = _service.GetPageMetadata(Site.ID, WBHelper.CurrentLangID(), Request.RawUrl);
            }

            int UserID = 0;

            if (User.Identity.IsAuthenticated)
            {
                _viewModel.CurrentUserName = loginuser.Details.FirstName + " " + loginuser.Details.LastName;
                if (loginuser != null && loginuser.Details != null)
                {
                    UserID = loginuser.Details.ID;
                }
                else if (User.Identity.IsAuthenticated && !string.IsNullOrEmpty(User.Identity.Name))
                {
                    if (loginuser != null && loginuser.Details != null)
                    {
                        UserID = loginuser.Details.ID;
                    }
                }
            }

            if (ContractID.Equals(0))
            {
                ContractID = WBSSLStore.Web.Helpers.WBHelper.GetCurrentContractID(UserID, Site.ID);
            }

            _viewModel.Items = _service.GetAllProductPricing(currentsite.ID, ContractID);
            return(View(_viewModel));
        }
Пример #2
0
        public ActionResult ActivateAccount(string email, string redirect = "Accounts")
        {
            var user = db.Users.FirstOrDefault(u => u.Email == email);

            if (user != null)
            {
                user.AccountStatus = AccountStatusConstant.ACTIVE;
            }
            db.SaveChanges();

            string body     = "Hello " + user.FirstName + ", your WizBooklat account has been activated. Please login <a href='http://wizbooklat.azurewebsites.net/Account/Login/'>here.</a>";
            string fromName = "WizBooklat Registration";
            string subject  = "WizBooklat Account has been Activated!"; //+ DateTime.UtcNow.AddHours(8).ToString("MM-dd-yy");

            try
            {
                WBHelper.SendEmail(fromName, subject, body, user.Email, user.FirstName);
            }
            catch (Exception e)
            {
                return(Content(e.Message));
            }

            TempData["Message"] = "<strong>Account has been activated.</strong> We've sent a notification to " + user.Email + ".";
            return(RedirectToAction(redirect));
        }
        public ViewResult Pricing()
        {
            int ContractID = WBHelper.GetCurrentContractID(LoginUser.ID, Site.ID);
            var pricing    = _repoPricing.Find(p => p.SiteID == Site.ID && p.RecordStatusID == (int)RecordStatus.ACTIVE && p.ContractID == ContractID).Include(p => p.Product).Include(p => p.Contract).ToList();

            return(View(pricing));
        }
Пример #4
0
        private void GetMetaDataAndContext(string slug, CurrentSiteSettings settings)
        {
            _viewModel.CMSPage = _service.GetPageMetadata(Site.ID, WBHelper.CurrentLangID(), "/" + slug);
            if (_viewModel.CMSPage != null)
            {
                ReplaceMetaTag();
                _viewModel.CMSPageContent = _service.GetPageContent(_viewModel.CMSPage.ID);

                //get Data For

                if (_viewModel.CMSPageContent != null && !string.IsNullOrEmpty(_viewModel.CMSPageContent.PageContent))
                {
                    //_viewModel.CMSPageContent.PageContent = ReplacePriceControl(_viewModel.CMSPageContent.PageContent, settings);
                }
                else if (_viewModel.CMSPageContent != null && string.IsNullOrEmpty(_viewModel.CMSPageContent.PageContent))
                {
                    _viewModel.CMSPageContent.PageContent = "<h1>Set Content of your Page.</h1>";
                }
                else if (_viewModel.CMSPageContent == null)
                {
                    _viewModel.CMSPageContent             = new CMSPageContent();
                    _viewModel.CMSPageContent.PageContent = "<h1>Set Content of your Page.</h1>";
                }
            }
            else
            {
                _viewModel.CMSPage                    = new CMSPage();
                _viewModel.CMSPageContent             = new CMSPageContent();
                _viewModel.CMSPageContent.PageContent = "<h1>Set Content of your Page.</h1>";
            }
        }
        public ActionResult Preferences(FormCollection collection)
        {
            if (!string.IsNullOrEmpty(collection["txtPassword"]))
            {
                string PasswordHash            = WBHelper.CreatePasswordHash(collection["txtPassword"].ToString(), LoginUser.PasswordSalt);
                WBSSLStore.Domain.User objUser = LoginUser;
                objUser.ConfirmPassword = PasswordHash;
                objUser.PasswordHash    = PasswordHash;
                _repository.Update(objUser);
                _unitOfWork.Commit();

                var _emailservice = DependencyResolver.Current.GetService <IEmailQueueService>();
                if (LoginUser.UserType == UserType.CUSTOMER)
                {
                    _emailservice.PrepareEmailQueue(Site.ID, WBHelper.CurrentLangID(), EmailType.CUSTOMER_CHANGE_PASSWORD, SiteCacher.SiteSMTPDetail().ID, LoginUser.Email, LoginUser);
                }
                else
                {
                    _emailservice.PrepareEmailQueue(Site.ID, WBHelper.CurrentLangID(), EmailType.RESELLER_CHANGE_PASSWORD_EMAIL, SiteCacher.SiteSMTPDetail().ID, LoginUser.Email, LoginUser);
                }
                _unitOfWork.Commit();

                ViewBag.Message = "<div class='alert-success'>" + WBSSLStore.Resources.GeneralMessage.Message.Pwdchanged + "</div>";
                return(View(LoginUser));
            }
            else
            {
                ViewBag.Message = "<div class='alert-danger'>" + WBSSLStore.Resources.ErrorMessage.Message.PasswordRequired + "</div>";
                return(View(LoginUser));
            }
        }
Пример #6
0
        private void SendMailForResellerSignUp(ResellerSignup objReseller)
        {
            try
            {
                var                    ToEmail     = Site.Settings.Where(ss => ss.SiteID == Site.ID && ss.Key.ToLower() == SettingConstants.CURRENT_SITE_TOEMAIL.ToLower()).FirstOrDefault();
                SiteSettings           thankyou    = Site.Settings.Where(o => o.Key == WBSSLStore.Domain.SettingConstants.CURRENT_SITE_THANKYOUPAGE && o.SiteID == Site.ID).FirstOrDefault();
                var                    objEmailQue = DependencyResolver.Current.GetService <WBSSLStore.Service.IEmailQueueService>();
                WBSSLStore.Domain.User objUser     = new Domain.User();
                objUser.FirstName                   = objReseller.FirstName;
                objUser.LastName                    = objReseller.LastName;
                objUser.Email                       = objReseller.Email;
                objUser.Address                     = new Address();
                objUser.Address.Street              = objReseller.Street;
                objUser.Address.City                = objReseller.City;
                objUser.Address.CompanyName         = objReseller.CompanyName;
                objUser.Address.Country             = new Country();
                objUser.Address.Country.CountryName = objReseller.CountryName;
                objUser.Address.State               = objReseller.State;
                objUser.Address.Fax                 = objReseller.Fax;
                objUser.Address.Phone               = objReseller.Phone;
                objUser.CompanyName                 = objReseller.CountryName;
                objUser.HeardBy                     = objReseller.HearedBy;

                objEmailQue.PrepareEmailQueue(Site.ID, WBHelper.CurrentLangID(), EmailType.ADMIN_NEW_RESELLER, SiteCacher.SiteSMTPDetail().ID, !string.IsNullOrEmpty(Convert.ToString(ToEmail.Value)) ? Convert.ToString(ToEmail.Value) : "*****@*****.**", objUser);
                objEmailQue.PrepareEmailQueue(Site.ID, WBHelper.CurrentLangID(), EmailType.RESELLER_WELCOME_EMAIL, SiteCacher.SiteSMTPDetail().ID, Convert.ToString(objReseller.Email), objUser);
                _unitOfWork.Commit();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public void ExportToCSV(FormCollection collection)
        {
            List <SelectListItem> lstheader = new List <SelectListItem>();

            lstheader.Add(new SelectListItem()
            {
                Text = "Order Date", Value = "TransactionDate"
            });
            lstheader.Add(new SelectListItem()
            {
                Text = "Last Transaction Details", Value = "TransactionDetail"
            });
            lstheader.Add(new SelectListItem()
            {
                Text = "Type", Value = "TransactionMode"
            });
            lstheader.Add(new SelectListItem()
            {
                Text = "Payment-Amount", Value = "PaymentAmount"
            });
            lstheader.Add(new SelectListItem()
            {
                Text = "Payment Mode", Value = "PaymentMode"
            });
            lstheader.Add(new SelectListItem()
            {
                Text = "Credit", Value = "CreditAmount"
            });

            WBHelper.GetCSVFile <AccountStatement>(GetUserTransData(collection), lstheader, "Statement");
        }
Пример #8
0
        public ActionResult resetadpassword(User user, FormCollection collection)
        {
            Site Site = GetSite(user.SiteID);

            string msg = string.Empty;

            if (user.ID > 0)
            {
                User objUser = _repository.FindByID(user.ID);
                objUser.PasswordSalt    = WBHelper.CreateSalt();
                objUser.PasswordHash    = WBHelper.CreatePasswordHash(collection["txtPassword"], objUser.PasswordSalt);
                objUser.ConfirmPassword = objUser.PasswordHash;
                _repository.Update(objUser);
                _unitOfWork.Commit();


                msg = "<div class='normsg'>Password changed successfully. <a href='" + Request.Url.Scheme + "://" + Site.Alias + "/logon" + "'>Click here</a> to login.</div>";
            }
            else
            {
                msg = "<div class='normsg'>Error during Password change process. Please try again.</div>";
            }

            return(Json(new { d = msg }, JsonRequestBehavior.AllowGet));
        }
Пример #9
0
        public ActionResult contactuspost(FormCollection collection)
        {
            string CompanyName = string.Empty; string Name = string.Empty; string Phone = string.Empty; string Email = string.Empty; string Comment = string.Empty;
            string Subject = string.Empty;

            try
            {
                CompanyName = Convert.ToString(collection["txtCompany"]);
                Name        = Convert.ToString(collection["txtFullname"]);
                Phone       = Convert.ToString(collection["txtPhone"]);
                Email       = Convert.ToString(collection["txtEmail"]);
                Comment     = Convert.ToString(collection["txtComment"]);

                var          subject  = Site.Settings.Where(ss => ss.SiteID == Site.ID && ss.Key == SettingConstants.CURRENT_SITE_SUBJECTFEIELD).FirstOrDefault();
                var          ToEmail  = Site.Settings.Where(ss => ss.SiteID == Site.ID && ss.Key.ToLower() == SettingConstants.CURRENT_SITE_TOEMAIL.ToLower()).FirstOrDefault();
                SiteSettings thankyou = Site.Settings.Where(o => o.Key == WBSSLStore.Domain.SettingConstants.CURRENT_SITE_THANKYOUPAGE && o.SiteID == Site.ID).FirstOrDefault();


                Subject = Convert.ToString(subject.Value);
                var      objEmailQue = DependencyResolver.Current.GetService <WBSSLStore.Service.IEmailQueueService>();
                string[] strValues   = new string[] { CompanyName, Name, Phone, Email, Comment, Subject };
                objEmailQue.PrepareEmailQueue(Site.ID, WBHelper.CurrentLangID(), EmailType.CONTACTUS_EMAIL, SiteCacher.SiteSMTPDetail().ID, Convert.ToString(ToEmail.Value), strValues);
                _unitOfWork.Commit();
            }
            catch (Exception ex)
            {
                Logger.Logger.Log_Exception(ex);
                return(Json(new { issuccess = "false" }, JsonRequestBehavior.AllowGet));
            }

            return(Json(new { issuccess = "true" }, JsonRequestBehavior.AllowGet));
        }
Пример #10
0
        public void ExportDataToCSV(string Name, string Email)
        {
            var cutomers = _service.GetCustomerList(Site.ID, Name, Email).OrderBy(ord => ord.TotalPurchase).ThenBy(t => t.CompanyName).ThenBy(n => n.FirstName);

            List <SelectListItem> lstheader = new List <SelectListItem>();

            lstheader.Add(new SelectListItem()
            {
                Text = "First Name", Value = "FirstName"
            });
            lstheader.Add(new SelectListItem()
            {
                Text = "Last Name", Value = "LastName"
            });
            lstheader.Add(new SelectListItem()
            {
                Text = "Reseller Since", Value = "RegisterDate"
            });
            lstheader.Add(new SelectListItem()
            {
                Text = "Total Purchase", Value = "TotalPurchase"
            });
            lstheader.Add(new SelectListItem()
            {
                Text = "IsActive", Value = "RecordStatusID"
            });

            WBHelper.GetCSVFile <UserExt>(cutomers.ToList(), lstheader, "CustomerList");
        }
 public ActionResult Edit(User user)
 {
     ViewBag.Country = CountryList.ToArray();
     ViewBag.Message = string.Empty;
     if (ModelState.IsValid)
     {
         if (_repository.Find(u => u.Email.ToLower().Equals(user.Email) && u.ID != user.ID && u.SiteID == user.SiteID).FirstOrDefault() == null)
         {
             user.AuditDetails.DateModified   = DateTimeWithZone.Now;
             user.AuditDetails.ByUserID       = user.ID;
             user.AuditDetails.HttpHeaderDump = Request.Headers.ToString();
             user.AuditDetails.IP             = Request.UserHostAddress;
             _service.SaveCustomer(user, WBHelper.CurrentLangID(), SiteCacher.SiteSMTPDetail().ID);
             ViewBag.Message = "<div class='alert-success'>" + WBSSLStore.Resources.GeneralMessage.Message.SavedSuccessfully + "</div>";
             //ViewBag.Message = WBSSLStore.Resources.ErrorMessage.Message.SavedSuccessfully;
             return(View(user));
         }
         else
         {
             ViewBag.Message = "<div class='alert-danger'>" + WBSSLStore.Resources.GeneralMessage.Message.EmailExists + "</div>";
             //ViewBag.Message = WBSSLStore.Resources.ErrorMessage.Message.EmailExists;
             return(View(user));
         }
     }
     else
     {
         return(View(user));
     }
 }
Пример #12
0
        public void ExportDataToCSV(string ResellerName, string Email, RecordStatus?eRecordStatus, DateTime dtStartDate, DateTime dtEndDate, decimal MinPrice, decimal MaxPrice)
        {
            var resellers = _service.GetResellerData(Site.ID, ResellerName, Email, eRecordStatus, dtStartDate, dtEndDate, MinPrice, MaxPrice).OrderBy(ord => ord.TotalPurchase).ThenBy(t => t.CompanyName).ThenBy(n => n.FirstName);

            List <SelectListItem> lstheader = new List <SelectListItem>();

            lstheader.Add(new SelectListItem()
            {
                Text = "First Name", Value = "FirstName"
            });
            lstheader.Add(new SelectListItem()
            {
                Text = "Last Name", Value = "LastName"
            });
            lstheader.Add(new SelectListItem()
            {
                Text = "Contract Name", Value = "ContractName"
            });
            lstheader.Add(new SelectListItem()
            {
                Text = "Reseller Since", Value = "RegisterDate"
            });
            lstheader.Add(new SelectListItem()
            {
                Text = "Total Purchase", Value = "TotalPurchase"
            });
            lstheader.Add(new SelectListItem()
            {
                Text = "IsActive", Value = "RecordStatusID"
            });

            WBHelper.GetCSVFile <UserExt>(resellers.ToList(), lstheader, "ResellerList");
        }
        private void SetPricing(int BrandID, string code = "")
        {
            int UserID = 0;

            if (User.Identity.IsAuthenticated)
            {
                if (loginuser != null && loginuser.Details != null)
                {
                    UserID = loginuser.Details.ID;
                }
                else if (User.Identity.IsAuthenticated && !string.IsNullOrEmpty(User.Identity.Name))
                {
                    if (loginuser != null && loginuser.Details != null)
                    {
                        UserID = loginuser.Details.ID;
                    }
                }
            }

            if (ContractID.Equals(0))
            {
                ContractID = WBHelper.GetCurrentContractID(UserID, Site.ID);
            }

            _viewModel.Items = _service.GetProductPricing(Site.ID, 0, ContractID, BrandID, code);
        }
        public override bool ValidateUser(string username, string password)
        {
            bool result = false;


            bool AlreadyChecked = false;

            //Checks if User has already being checked during lifetime of this request.
            if (HttpContext.Current.Items["SSLMEMBERSHIPVALIDATEUSER" + ApplicationName] != null)
            {
                result         = Convert.ToBoolean(HttpContext.Current.Items["SSLMEMBERSHIPVALIDATEUSER" + ApplicationName].ToString());
                AlreadyChecked = true;
            }

            if (AlreadyChecked == false)
            {
                repo = DependencyResolver.Current.GetService <IRepository <User> >();
                User usertemp = repo.Find(x => x.Email == username && x.SiteID == siteid && x.RecordStatusID == 1).FirstOrDefault();


                if (usertemp != null && usertemp.ID > 0 && usertemp.PasswordHash == WBHelper.CreatePasswordHash(password, usertemp.PasswordSalt))
                {
                    result = true;
                }
                HttpContext.Current.Items["SSLMEMBERSHIPVALIDATEUSER" + ApplicationName] = result;
            }

            return(result);
        }
Пример #15
0
        public ActionResult DisableAccount(string email, string redirect = "Accounts")
        {
            var user = db.Users.FirstOrDefault(u => u.Email == email);

            if (user != null)
            {
                user.AccountStatus = AccountStatusConstant.DISABLED;

                string body     = "Hello " + user.FirstName + ", your WizBooklat account has been deactivated. Please <a href='http://wizbooklat.azurewebsites.net/Home/Index#Contact'>contact</a> an administrator to reactivate.";
                string fromName = "WizBooklat Account Service";
                string subject  = "WizBooklat Account Deactivated"; //+ DateTime.UtcNow.AddHours(8).ToString("MM-dd-yy");

                try
                {
                    WBHelper.SendEmail(fromName, subject, body, user.Email, user.FirstName);
                }
                catch (Exception e)
                {
                    return(Content(e.Message));
                }
            }
            db.SaveChanges();

            TempData["Message"] = "<strong>Account has been disabled.</strong> We've sent a notification to " + user.Email + ".";
            return(RedirectToAction(redirect));
        }
Пример #16
0
        public ActionResult Forgotpassword(FormCollection collection)
        {
            string EmailAddress = Convert.ToString(Request.Form["txtEmailAddress"]);

            if (!string.IsNullOrEmpty(EmailAddress))
            {
                ViewBag.Message = _service.SendForgotPasswordEmail(EmailAddress, WBHelper.CurrentLangID(), SiteCacher.SiteSMTPDetail().ID, Site.ID, WBSiteSettings.AppPath + "/resetpassword?token=");
            }
            return(View());
        }
Пример #17
0
 public ActionResult ssltools()
 {
     _viewModel.CMSPage = _service.GetPageMetadata(Site.ID, WBHelper.CurrentLangID(), Request.Url.AbsolutePath);
     ReplaceMetaTag();
     if (User.Identity.IsAuthenticated)
     {
         _viewModel.CurrentUserName = loginuser.Details.FirstName + " " + loginuser.Details.LastName;
     }
     return(View(_viewModel));
 }
Пример #18
0
        //public bool AddEdit(ResellerContract resellercontract)
        public bool AddEdit(CusUserUserOption resellercontract)
        {
            try
            {
                bool bIsEmailExist = _service.EmailExist(resellercontract.objResContract.Reseller.Email, Site.ID, resellercontract.objResContract.Reseller.ID);
                if (bIsEmailExist)
                {
                    ViewBag.IsUserExist = true;
                    return(false);
                }
                else
                {
                    ViewBag.IsUserExist = false;
                }
                //resellercontract.Reseller.AuditDetails.ID = resellercontract.Reseller.AuditID;
                resellercontract.objResContract.Reseller.AuditDetails.DateModified   = DateTimeWithZone.Now;
                resellercontract.objResContract.Reseller.AuditDetails.ByUserID       = CurrentUser.ID;
                resellercontract.objResContract.Reseller.AuditDetails.HttpHeaderDump = HttpUtility.UrlDecode(Request.Headers.ToString());
                resellercontract.objResContract.Reseller.AuditDetails.IP             = Request.UserHostAddress;

                //  resellercontract.AuditID = resellercontract.AuditDetails.ID;
                resellercontract.objResContract.AuditDetails.DateModified   = DateTimeWithZone.Now;
                resellercontract.objResContract.AuditDetails.ByUserID       = 0;
                resellercontract.objResContract.AuditDetails.HttpHeaderDump = "admin system";
                resellercontract.objResContract.AuditDetails.IP             = Request.UserHostAddress;

                resellercontract.objResContract.Reseller.UserType   = UserType.RESELLER;
                resellercontract.objResContract.Reseller.UserTypeID = (int)UserType.RESELLER;

                if (resellercontract.objResContract.UserID == 0)
                {
                    resellercontract.objResContract.Reseller.AuditDetails.DateCreated = DateTimeWithZone.Now;
                    resellercontract.objResContract.AuditDetails.DateCreated          = DateTimeWithZone.Now;
                    resellercontract.objResContract.Reseller.SiteID = Site.ID;
                    resellercontract.objResContract.SiteID          = Site.ID;

                    resellercontract.objResContract.Reseller.PasswordSalt    = WBSSLStore.Web.Helpers.WBHelper.CreateSalt();
                    resellercontract.objResContract.Reseller.PasswordHash    = WBSSLStore.Web.Helpers.WBHelper.CreatePasswordHash(resellercontract.objResContract.Reseller.PasswordHash, resellercontract.objResContract.Reseller.PasswordSalt);
                    resellercontract.objResContract.Reseller.ConfirmPassword = resellercontract.objResContract.Reseller.PasswordHash;
                }

                if (resellercontract.objUserOption.ID == 0)
                {
                    resellercontract.objUserOption.SiteID    = Site.ID;
                    resellercontract.objUserOption.DateAdded = DateTimeWithZone.Now;
                }

                return(_service.SaveReseller(resellercontract.objResContract, WBHelper.CurrentLangID(), SiteCacher.SiteSMTPDetail().ID, resellercontract.objUserOption));
            }
            catch (Exception exc)
            {
                ViewBag.ErrMsg = exc.Message.ToString();
                return(false);
            }
        }
        public ActionResult AddFund(FormCollection collection, int ID)
        {
            User currentuser = null;

            if (User.Identity.IsAuthenticated)
            {
                SSLStoreUser loginuser = (SSLStoreUser)Membership.GetUser();
                if (loginuser != null && loginuser.Details != null)
                {
                    currentuser = loginuser.Details;
                }
            }


            var  _user   = DependencyResolver.Current.GetService <IRepository <User> >();
            User objUser = _user.Find(u => u.ID == ID && u.SiteID == Site.ID).FirstOrDefault();

            if (Convert.ToDecimal(collection["txtAmount"]) != 0)
            {
                if (objUser != null)
                {
                    Audit audit = new Audit();
                    audit.ByUserID       = currentuser.ID;
                    audit.DateCreated    = DateTimeWithZone.Now;
                    audit.HttpHeaderDump = HttpUtility.UrlDecode(Request.Headers.ToString());
                    audit.IP             = Request.UserHostAddress;

                    UserTransaction usertransaction = new UserTransaction();
                    usertransaction.AuditDetails                = audit;
                    usertransaction.TransactionModeID           = (int)TransactionMode.ADDFUND;
                    usertransaction.ReceipientInstrumentDetails = collection["txtReceiptDetails"];
                    usertransaction.Comment           = collection["txtRemark"];
                    usertransaction.TransactionAmount = Convert.ToDecimal(collection["txtAmount"]);

                    usertransaction.UserID = ID;
                    usertransaction.SiteID = Site.ID;

                    _repository.Add(usertransaction);
                    _unitOfWork.Commit();

                    var _newusertransaction = _repository.Find(ut => ut.ID == usertransaction.ID)
                                              .EagerLoad(ut => ut.User)
                                              .FirstOrDefault();
                    _service.PrepareEmailQueue(Site.ID, WBHelper.CurrentLangID(), EmailType.ADMIN_ADD_FUND_NOTIFICATION, SiteCacher.SiteSMTPDetail().ID, SiteAdminEmail, _newusertransaction);
                    _unitOfWork.Commit();

                    return(RedirectToAction("edit", objUser.UserType.ToString().ToLower(), new { id = ID }));
                }
            }
            else
            {
                ViewBag.AmountMsg = WBSSLStore.Resources.ErrorMessage.Message.AmtGreaterthanzero;
            }
            return(View());
        }
        public ActionResult CancellationRequest(SupportRequest supportrequest, FormCollection collection)
        {
            if (ModelState.IsValid && collection != null)
            {
                Audit audit = new Audit();
                audit.ByUserID       = user.ID;
                audit.DateCreated    = System.DateTimeWithZone.Now;
                audit.DateModified   = System.DateTimeWithZone.Now;
                audit.HttpHeaderDump = HttpUtility.UrlDecode(System.Web.HttpContext.Current.Request.Headers.ToString());
                audit.IP             = System.Web.HttpContext.Current.Request.UserHostAddress;

                SupportRequest sr = new SupportRequest();
                sr.isOpen             = true;
                sr.OrderDetailID      = Convert.ToInt32(collection["requestid"]);
                sr.RefundStatusID     = Convert.ToInt16(collection["RefundStatusID"]);
                sr.SiteID             = Site.ID;
                sr.SupportTypeID      = (int)SupportType.REFUNDREQUEST;
                sr.UserID             = user.ID;
                sr.ExternalIncidentID = string.Empty;
                sr.AuditDetails       = audit;
                sr.Subject            = @WBSSLStore.Resources.GeneralMessage.Message.RefundRequest_Caption + "-" + @WBSSLStore.Resources.GeneralMessage.Message.Invoice_Header + "#" + (collection["IncidentID"]);
                sr.User   = user;
                sr.Reason = collection["ddlReason"];

                SupportDetail sd = new SupportDetail();
                sd.AuditDetails   = audit;
                sd.SupportRequest = sr;
                sd.StaffNote      = "";
                sd.Comments       = "<span><b>" + user.FirstName + " " + user.LastName + " ( " + DateTimeWithZone.Now + " )</b></span><p>" + collection["txtcomment"] + "<p/>";
                _viewModel.Add(sd);
                _unitOfWork.Commit();

                var _newsupportdetail = _viewModel.Find(d => d.ID == sd.ID)
                                        .EagerLoad(d => d.SupportRequest, d => d.SupportRequest.User, d => d.SupportRequest.OrderDetail)
                                        .FirstOrDefault();
                _newsupportdetail.SupportRequest.OrderDetail.InvoiceNumber = WBHelper.InvoicePrefix(Site) + _newsupportdetail.SupportRequest.OrderDetail.OrderID;

                var _emailService = DependencyResolver.Current.GetService <IEmailQueueService>();
                if (sd.SupportRequest.User.UserType == UserType.RESELLER)
                {
                    _emailService.PrepareEmailQueue(Site.ID, LangID, EmailType.RESELLER_SUPPORT_NOTIFICATION, SMTPID, sd.SupportRequest.User.Email, _newsupportdetail);
                }
                else
                {
                    _emailService.PrepareEmailQueue(Site.ID, LangID, EmailType.CUSTOMER_SUPPORT_NOTIFICATION, SMTPID, sd.SupportRequest.User.Email, _newsupportdetail);
                }
                //send mail to admin
                _emailService.PrepareEmailQueue(Site.ID, LangID, EmailType.ADMIN_SUPPORT_NOTIFICATION, SMTPID, WBHelper.SiteAdminEmail(Site), _newsupportdetail);
                _unitOfWork.Commit();
            }

            return(RedirectToAction("index"));
        }
Пример #21
0
        public ViewResult Detail(int id)
        {
            ViewBag.ProductPricingID = 0;

            var            _supportreq = DependencyResolver.Current.GetService <IRepository <SupportRequest> >();
            SupportRequest objSppReq   = _supportreq.Find(y => y.OrderDetailID == id && y.SupportTypeID == (int)SupportType.REFUNDREQUEST).FirstOrDefault();

            if (objSppReq != null)
            {
                if (objSppReq.OrderDetailID == id)
                {
                    ViewBag.CancelationRequest = "Cancel";
                }
            }



            OrderDetail orderdetail = _repository.Find(x => x.ID == id)
                                      .EagerLoad(o => o.Order, o => o.Product, o => o.CertificateRequest, o => o.AuditDetails, o => o.StoreAPIInteraction, o => o.CertificateRequest.AdminContact, o => o.CertificateRequest.TechnicalContact, o => o.Product)
                                      .FirstOrDefault();

            if (orderdetail != null && orderdetail.Price > 0)
            {
                var             _usertransaction = DependencyResolver.Current.GetService <IRepository <UserTransaction> >();
                UserTransaction objTrans         = _usertransaction.Find(ut => ut.OrderDetailID == id && ut.PaymentID != null)
                                                   .EagerLoad(ut => ut.Payment, ut => ut.Payment.GatewayInteraction)
                                                   .FirstOrDefault();
                if (objTrans != null)
                {
                    ViewBag.PaymentType = objTrans.Payment.PaymentMode.GetEnumDescription <PaymentMode>();
                    ViewBag.AuthCode    = objTrans.Payment.GatewayInteraction.GatewayAuthCode;
                }
            }
            if (orderdetail != null && !string.IsNullOrEmpty(orderdetail.ExternalOrderID) && orderdetail.OrderStatus != OrderStatus.REJECTED && orderdetail.OrderStatus != OrderStatus.REFUNDED)
            {
                if (orderdetail.OrderStatus == OrderStatus.ACTIVE && (orderdetail.CertificateExpiresOn.Value - DateTimeWithZone.Now.Date).Days <= 30)
                {
                    var            _PricingRepo = DependencyResolver.Current.GetService <IRepository <ProductPricing> >();
                    int            ContractID   = WBHelper.GetCurrentContractID(orderdetail.Order.UserID, Site.ID);
                    ProductPricing objPrice     = _PricingRepo.Find(pp => pp.ProductID == orderdetail.Product.ID && pp.NumberOfMonths == orderdetail.NumberOfMonths && pp.ContractID == ContractID).FirstOrDefault();
                    if (objPrice != null)
                    {
                        ViewBag.ProductPricingID = objPrice.ID;
                    }
                }


                GetOrderstatusThruRESTAPI(orderdetail, Site);
            }


            return(View(orderdetail));
        }
Пример #22
0
        public void ExportDataToCSV(OrderStatus?eOrderStatus, DateTime dtStartDate, DateTime dtEndDate)
        {
            var orderdetail = GetDateWiseOrders(eOrderStatus, dtStartDate, dtEndDate).ToList();

            List <string> lstData = new List <string>();

            lstData.Add("Order Date,OrderID,Product Name,InvoiceID,Domain Name,Order Status,Price,");
            foreach (OrderDetail ord in orderdetail)
            {
                lstData.Add(ord.AuditDetails.DateCreated.ToShortDateString() + "," + ord.ExternalOrderID + "," + ord.ProductName + "," +
                            InvoicePrefix + ord.OrderID + "," + (string.IsNullOrEmpty(ord.CertificateRequest.DomainName) ? "-" : ord.CertificateRequest.DomainName) + "," + ord.OrderStatus + "," + ord.Price.ToString("c").Replace(",", string.Empty));
            }
            WBHelper.GetCSVFile(lstData, "OrderList");
        }
Пример #23
0
        private void ExportDataToCSV(FormCollection collection)
        {
            List <OrderDetail> lstorderdetail = getSearchModel(collection).ToList();

            List <string> lstData = new List <string>();

            lstData.Add("Order Date,OrderID,Product Name,InvoiceID,Domain Name,Order Status,Price,");
            foreach (OrderDetail ord in lstorderdetail)
            {
                lstData.Add(ord.AuditDetails.DateCreated.ToShortDateString() + "," + ord.ExternalOrderID + "," + ord.ProductName + "," +
                            InvoicePrefix + ord.OrderID + "," + (string.IsNullOrEmpty(ord.CertificateRequest.DomainName) ? "-" : ord.CertificateRequest.DomainName) + "," + ord.OrderStatus + "," + ord.Price.ToString("c").Replace(",", string.Empty));
            }
            WBHelper.GetCSVFile(lstData, "OrderList");
        }
        //
        // GET: /Client/Support/Create

        public ActionResult CancellationRequest(int id)
        {
            OrderDetail ord = _service.FindByID(id);

            if (ord != null)
            {
                ViewBag.OrderDetailID = ord.ID;
                ViewBag.IncidentID    = WBHelper.InvoicePrefix(Site) + ord.OrderID;
                ViewBag.ProductName   = ord.ProductName;
                ViewBag.ExOrderID     = ord.ExternalOrderID;
            }
            ViewBag.Username = user != null ? user.FirstName + " " + user.LastName : string.Empty;
            SupportRequest _supportrequest = DependencyResolver.Current.GetService <SupportRequest>();

            return(View(_supportrequest));
        }
        //
        // GET: /Authentication/User/
        private ActionResult Redirect301(string slug, string Host)
        {
            if (Host.IndexOf('.') > 0 && !(Host.Split('.').Length > 2))
            {
                if (WBHelper.IsRunWithWWW(Site) && !slug.Contains("www."))
                {
                    return(Redirect(slug.Replace(Host, "www." + Host)));
                }
                else if (!WBHelper.IsRunWithWWW(Site) && slug.Contains("www."))
                {
                    return(Redirect(slug.Replace("www.", "")));
                }
            }

            return(Redirect(slug));
        }
        public ActionResult SendEmail()
        {
            SiteSMTP smtpSettings = _service.Find(ss => ss.SiteID == Site.ID).FirstOrDefault();
            string   returnMSG    = string.Empty;

            using (System.Net.Mail.SmtpClient smtpClient = new System.Net.Mail.SmtpClient())
            {
                smtpClient.EnableSsl             = smtpSettings.UseSSL;
                smtpClient.UseDefaultCredentials = (!string.IsNullOrEmpty(smtpSettings.SMTPUser) && !string.IsNullOrEmpty(smtpSettings.SMTPPassword));
                if (smtpClient.UseDefaultCredentials && !String.IsNullOrWhiteSpace(smtpSettings.SMTPUser))
                {
                    smtpClient.Credentials = new System.Net.NetworkCredential(smtpSettings.SMTPUser, smtpSettings.SMTPPassword);
                }
                System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage(CurrentUser.Email, CurrentUser.Email);

                string strAlias = (!string.IsNullOrEmpty(Site.Alias) ? Site.Alias : Site.CName);
                message.Subject = "Welcome to " + strAlias;

                StringBuilder sbHTML = new StringBuilder(WBHelper.GetTemplateText(Server.MapPath("/content/Templates/SMTPCheckMail.htm")));
                sbHTML.Replace("[SITEALIAS]", strAlias);
                sbHTML.Replace("[EMAIL]", CurrentUser.Email);
                message.Body = sbHTML.ToString();

                if (smtpSettings.SMTPHost != null)
                {
                    smtpClient.Host = smtpSettings.SMTPHost;
                }

                smtpClient.Port = smtpSettings.SMTPPort;

                smtpClient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;


                message.IsBodyHtml = true;

                try
                {
                    smtpClient.Send(message);
                    returnMSG = "Email Send Successfully.";
                }
                catch (Exception e)
                {
                    returnMSG = e.Message;
                }
            }
            return(Json(returnMSG));
        }
Пример #27
0
        public void ExportDataToCSV(int?UserID, OrderStatus?eOrderStatus, DateTime dtStartDate, DateTime dtEndDate)
        {
            var orderdetail = (_repository.Find(od => od.Order.SiteID == Site.ID && od.Order.UserID == (UserID == null ? od.Order.UserID : UserID) &&
                                                od.OrderStatusID == (eOrderStatus != null ? (int?)eOrderStatus : od.OrderStatusID) &&
                                                (System.Data.Entity.DbFunctions.DiffDays(dtStartDate, od.AuditDetails.DateCreated) >= 0 && System.Data.Entity.DbFunctions.DiffDays(od.AuditDetails.DateCreated, dtEndDate) >= 0))
                               .EagerLoad(ut => ut.AuditDetails, ut => ut.CertificateRequest).OrderByDescending(ord => ord.AuditDetails.DateCreated)).ToList();

            List <string> lstData = new List <string>();

            lstData.Add("Order Date,OrderID,Product Name,InvoiceID,Domain Name,Order Status,Price,");
            foreach (OrderDetail ord in orderdetail)
            {
                lstData.Add(ord.AuditDetails.DateCreated.ToShortDateString() + "," + ord.ExternalOrderID + "," + ord.ProductName + "," +
                            InvoicePrefix + ord.OrderID + "," + (string.IsNullOrEmpty(ord.CertificateRequest.DomainName) ? "-" : ord.CertificateRequest.DomainName) + "," + ord.OrderStatus + "," + ord.Price.ToString("c").Replace(",", string.Empty));
            }
            WBHelper.GetCSVFile(lstData, "OrderList");
        }
Пример #28
0
        private string SiteAlias(string Host)
        {
            if (Host.IndexOf('.') > 0 && !(Host.Split('.').Length > 2))
            {
                if (WBHelper.IsRunWithWWW(Site) && !Host.Contains("www."))
                {
                    Host = Host.Replace(Host, "www." + Host);
                }
                else if (!WBHelper.IsRunWithWWW(Site) && Host.Contains("www."))
                {
                    Host = Host.Replace("www.", "");
                }
            }


            return("http://" + Host);
        }
        public ActionResult paypalipn()
        {
            try
            {
                User U = null;
                if (U == null)
                {
                    int  UserID = Convert.ToInt32(Request.QueryString[SettingConstants.QS_USERID]);
                    var  repo   = DependencyResolver.Current.GetService <IRepository <User> >();
                    User user   = repo.FindByID(UserID);

                    if (user != null && user.ID > 0)
                    {
                        System.Web.Security.Membership.ApplicationName = user.SiteID.ToString();

                        System.Web.Security.FormsAuthentication.SetAuthCookie(user.Email, false);
                        U = user;
                    }
                }

                Site = GetSite(U.SiteID);
                currentsitesettings = new CurrentSiteSettings(Site);
                SetSiteIDInSession();

                _logger.Log("Start PayPal IPN Call Success. Url :" + Request.Url.AbsoluteUri.ToString(), Logger.LogType.INFO);
                if (System.Web.HttpContext.Current.Request.QueryString[SettingConstants.PAYPAL_PAYMENTTYPE].ToString().ToLower().Equals("reissueaddfund"))
                {
                    _service.ProcessPayPalIPNRequestReIssue(Site, WBHelper.CurrentLangID(), SiteCacher.SiteSMTPDetail().ID, currentsitesettings.SiteAdminEmail, currentsitesettings.InvoicePrefix);
                }
                else
                {
                    _service.ProcessPayPalIPNRequest(Site, WBHelper.CurrentLangID(), SiteCacher.SiteSMTPDetail().ID, currentsitesettings.SiteAdminEmail, currentsitesettings.InvoicePrefix);
                }
                _logger.Log("end Paypal IPN Call Success. Url :" + Request.Url.AbsoluteUri.ToString(), Logger.LogType.INFO);
            }
            catch (Exception e)
            {
                _logger.LogException(e);
            }
            finally
            {
                currentsitesettings = null;
            }
            return(null);
        }
        public ActionResult PasswordReset(User user, FormCollection collection)
        {
            Site Site       = GetSite(user.SiteID);
            bool ReturnCode = false;

            if (user.ID > 0)
            {
                User objUser = _repository.FindByID(user.ID);
                objUser.PasswordSalt    = WBHelper.CreateSalt();
                objUser.PasswordHash    = WBHelper.CreatePasswordHash(collection["txtPassword"], objUser.PasswordSalt);
                objUser.ConfirmPassword = objUser.PasswordHash;
                _repository.Update(objUser);
                _unitOfWork.Commit();
                ReturnCode = true;
            }
            string url = (USESSL ? "https" : "http") + "://" + (string.IsNullOrEmpty(Site.Alias) ? Site.CName : Site.Alias) + "/staticpage/passwordresetresult?authcode=" + HttpUtility.UrlEncode(CryptorEngine.Encrypt(ReturnCode.ToString() + SettingConstants.Seprate + user.ID, true));

            return(Redirect301(url, (string.IsNullOrEmpty(Site.Alias) ? Site.CName : Site.Alias)));
        }
Пример #31
0
 /// <summary>
 /// 查询供应商信息(AJAX)
 /// </summary>
 /// <param name="wb"></param>
 /// <param name="spu"></param>
 /// <returns></returns>
 public async Task<SuplierInfo> supplierInfo(WBHelper wbHelper, string spu)
 {
     var url = "http://chongzhi.taobao.com/item.do?spu={0}&action=edit&method=supplierInfo&_=" + DateTime.Now.Ticks;
     url = string.Format(url, spu);
     var content = await wbHelper.WB.GetAjaxResult(url);
     try
     {
         var suplierInfo = JsonConvert.DeserializeObject<SuplierInfo>(content);
         //查到供应商
         return suplierInfo;
     }
     catch (Exception ex)
     {
         AppendException(ex);
     }
     //无供应商,平台默认会自动关单
     return null;
 }
Пример #32
0
 private async Task CheckIfLoginRequired()
 {
     using (var helper = new WBHelper(false))
     {
         var x = await this.InvokeTask(helper.IsLoginRequired);
         while (x)
         {
             this.InvokeAction(ShowLoginWindow, helper.WB);
             x = await this.InvokeTask(helper.IsLoginRequired);
         }
     }
 }
Пример #33
0
        private async void TradeHub_TradeCreate(Top.Tmc.Message msg)
        {
            //AppendText(msg.Topic);
            //AppendText(msg.Content);

            //解析内容
            var definition = new { buyer_nick = "", payment = "", oid = 0L, tid = 0L, type = "guarantee_trade", seller_nick = "" };
            //var content = @"{'buyer_nick':'包花呗','payment':'9.56','oid':1316790655492656,'tid':1316790655492656,'type':'guarantee_trade','seller_nick':'红指甲与高跟鞋'}";
            var d = JsonConvert.DeserializeAnonymousType(msg.Content, definition);
            var trade = (await this.InvokeTask(client.TradeHub.GetTrade, d.tid)).Data;
            var product = AppDatabase.db.ProductItems.FindById(trade.NumIid);
            if (product == null)
            {
                AppendText("忽略非平台商品订单{0}", trade.Tid);
                return;
            }


            //更新订单列表
            AppDatabase.db.TopTrades.Upsert(trade, trade.Tid);
            AppendText("[{0}]交易创建:买家:{1}", d.tid, d.buyer_nick);

            //更新统计信息
            var statistic = AppDatabase.db.Statistics.FindById(d.seller_nick) ?? new Statistic { Id = d.seller_nick };
            statistic.BuyCount++;
            AppDatabase.db.Statistics.Upsert(statistic, statistic.Id);
            OnStatisticUpdate(statistic);

            SuplierInfo supplier = null;
            if (!string.IsNullOrEmpty(product.SupplierId))
            {
                supplier = product.GetSuplierInfo();
            }
            else
            {
                await CheckIfLoginRequired();
                using (var wbHelper = new WBHelper(true))
                {
                    try
                    {
                        //查找供应商
                        supplier = await this.InvokeTask(supplierInfo, wbHelper, product.SpuId);
                        if (supplier.profitData != null && supplier.profitData.Any())
                        {
                            product.OnSupplierInfoUpdate(AppDatabase.db.ProductItems, supplier);
                        }
                    }
                    catch (Exception ex)
                    {
                        AppendException(ex);
                    }
                }
            }
            if (supplier != null && supplier.profitData != null && supplier.profitData.Any())
            {
                //5分钟之前的消息即过期的下单信息不处理
                if ((ServerDateTime - trade.Created).TotalMinutes > 5)
                {
                    AppendText("[{0}/{1}]不拦截过期交易。", trade.Tid, trade.NumIid);
                    return;
                }

                var interceptType = AppSetting.UserSetting.Get<string>("拦截模式");
                if (interceptType == InterceptMode.无条件拦截模式)
                {
                    InteceptQueue.Enqueue(new InterceptInfo(supplier, product.SpuId, trade, statistic), InterceptTrade, OnInterceptExecuted);
                    return;
                }
                else if (interceptType == InterceptMode.仅拦截亏本交易)
                {
                    if (supplier.profitMin < 0)
                    {
                        InteceptQueue.Enqueue(new InterceptInfo(supplier, product.SpuId, trade, statistic), InterceptTrade, OnInterceptExecuted);
                    }
                    else
                        AppendText("[{0}/{1}]不拦截-{2}。", trade.Tid, trade.NumIid, interceptType);
                    return;
                }
                else if (interceptType == InterceptMode.智能拦截模式)
                {
                    //若14天内同充值号码
                    var number = new Regex(@"(?<=号码:|用户名:)(\d{5,12})\b").Match(trade.ReceiverAddress ?? "").Value;
                    if (!string.IsNullOrEmpty(number))
                    {
                        var countNumUsed = AppDatabase.db.TopTrades.Count(x => x.ReceiverAddress.Contains(number) && x.NumIid == trade.NumIid);
                        if (countNumUsed > 1)
                        {
                            //AppendText("14天内同充值号码拦截,订单ID={0}", trade.Tid);
                            InteceptQueue.Enqueue(new InterceptInfo(supplier, product.SpuId, trade, statistic), InterceptTrade, OnInterceptExecuted);
                            return;
                        }
                    }

                    //14天内同宝贝付款订单大于1
                    var orderCount = AppDatabase.db.TopTrades.Count(x => x.BuyerNick == trade.BuyerNick && x.NumIid == trade.NumIid);
                    if (orderCount > 1)
                    {
                        //AppendText("14天内同宝贝付款订单大于1拦截,订单ID={0}", trade.Tid);
                        InteceptQueue.Enqueue(new InterceptInfo(supplier, product.SpuId, trade, statistic), InterceptTrade, OnInterceptExecuted);
                        return;
                    }

                    //买家是白名单内买家,不拦截
                    if (AppSetting.UserSetting.Get("买家白名单", new string[0]).Any(x => x == trade.BuyerNick))
                    {
                        AppendText("[{0}/{1}]不拦截-{2}。", trade.Tid, trade.NumIid, interceptType);
                        return;
                    }
                    //黑名单买家一律拦截
                    if (AppSetting.UserSetting.Get<string[]>("买家黑名单", new string[0]).Any(x => x == trade.BuyerNick))
                    {
                        //AppendText("黑名单买家拦截,订单ID={0}", trade.Tid);
                        InteceptQueue.Enqueue(new InterceptInfo(supplier, product.SpuId, trade, statistic), InterceptTrade, OnInterceptExecuted);
                        return;
                    }

                    //购买数量超过1件的拦截
                    if (trade.Num > 1)
                    {
                        //AppendText("购买数量超过1件拦截,订单ID={0}", trade.Tid);
                        InteceptQueue.Enqueue(new InterceptInfo(supplier, product.SpuId, trade, statistic), InterceptTrade, OnInterceptExecuted);
                        return;
                    }
                    AppendText("[{0}/{1}]不拦截-{2}。", trade.Tid, trade.NumIid, interceptType);
                }
            }
            else
            {
                AppendText("[{0}/{1}]交易商品供应商信息未查询到,不拦截。", trade.Tid, trade.NumIid);
            }
        }
Пример #34
0
        private async Task CloseTradeIfPossible(long tid)
        {
            try
            {
                var topTrade = AppDatabase.db.TopTrades.FindById(tid);
                if (topTrade == null || !topTrade.Intercept)
                    return;
                var statistic = AppDatabase.db.Statistics.FindById(AppSetting.UserSetting.UserName);

                if (topTrade.Status == "TRADE_NO_CREATE_PAY" || topTrade.Status == "WAIT_BUYER_PAY" || string.IsNullOrEmpty(topTrade.Status))
                {
                    //等待付款
                    try
                    {
                        var result = await this.InvokeTask(client.TradeHub.CloseTrade, topTrade.Tid, AppSetting.UserSetting.Get<string>("关单原因"));
                    }
                    catch (Exception ex)
                    {
                        AppendException(ex);
                    }
                    return;
                }
                if (topTrade.Status == "TRADE_CLOSED" || topTrade.Status == "TRADE_CLOSED_BY_TAOBAO")
                {
                    //交易关闭

                    statistic.InterceptSuccess++;
                    AppDatabase.db.Statistics.Update(statistic);
                    OnStatisticUpdate(statistic);
                    AppendText("{0}关闭交易成功,买家:{1}", topTrade.Tid, topTrade.BuyerNick);
                }
                else
                {
                    //交易成功

                    statistic.InterceptFailed++;
                    AppDatabase.db.Statistics.Update(statistic);
                    OnStatisticUpdate(statistic);
                    AppendText("{0}关闭交易失败,买家:{1},订单状态:{2}", topTrade.Tid, topTrade.BuyerNick, topTrade.Status);
                }

                //恢复价格
                var product = AppDatabase.db.ProductItems.FindById(topTrade.NumIid);
                if (!product.NeedResotreProfit)
                {
                    //尝试还原价格时原始价格已经更新的话就不用恢复了
                    return;
                }

                using (var wbHelper = new WBHelper(false))
                {
                    var taoResult = await this.InvokeTask(supplierSave, wbHelper, product.SupplierId, product.SpuId, product.原利润.ToString("f2"), (product.进价 + product.原利润).ToString("f2"), topTrade.NumIid, tbcpCrumbs);
                    if (taoResult == null || taoResult.status != 200)
                    {
                        AppendText("商品{0}恢复价格失败,请注意!" + taoResult != null ? taoResult.msg : "", topTrade.NumIid);
                        return;
                    }
                    else
                    {
                        AppendText("商品{0}恢复价格已提交", topTrade.NumIid);
                    }
                }
            }
            catch (Exception ex)
            {
                AppendException(ex);
            }
        }
Пример #35
0
 private async Task<SimpleResult> SyncSupplierInfo(ProductItem product)
 {
     using (var helper = new WBHelper(true))
     {
         var success = false;
         //查找供应商
         var supplier = await this.InvokeTask(supplierInfo, helper, product.SpuId);
         if (supplier != null && supplier.profitData != null && supplier.profitData.Any())
         {
             product.OnSupplierInfoUpdate(AppDatabase.db.ProductItems, supplier);
             success = true;
         }
         return new SimpleResult { Success = success, ProductId = product.Id };
     }
 }
Пример #36
0
        public async Task<bool> durexValidate()
        {
            using (WBHelper helper = new WBHelper())
            {
                await this.InvokeTask(helper.SynchronousLoadDocument, "http://chongzhi.taobao.com/index.do?spm=0.0.0.0.Xwjc5t&method=index&random=0.7032918996278134");
                //getDurexParam
                var content = await this.InvokeTask(helper.WB.GetAjaxResult, "http://chongzhi.taobao.com/ajax.do?method=getDurexParam&type=0&callback=" + DateTime.Now.Ticks);
                var leng = DateTime.Now.Ticks.ToString().Length;
                content = content.Substring(leng + 1, content.Length - 2 - leng);
                var param = JsonConvert.DeserializeObject<DurexParamResult>(content);

                if (param.code == 200)
                {
                    if (!string.IsNullOrEmpty(param.ret.param))
                    {
                        durexParam = param.ret.param;
                        //durex/validate
                        var url = "http://aq.taobao.com/durex/validate?param=&redirecturl=%2F%2Fchongzhi.taobao.com%2Ferror.do%3Fmethod%3DdurexJump";
                        url = UrlHelper.SetValue(url, "param", durexParam);
                        try
                        {
                            var doc = await this.InvokeTask(helper.SynchronousLoadDocument, url, "http://chongzhi.taobao.com/error.do?method=durexJump&type=success");
                            return true;
                        }
                        catch { }
                    }
                    else
                    {
                        return true;
                    }
                }
            }
            return false;
        }
Пример #37
0
        //public async Task<TaoJsonpResult> downListItem(string ids)
        //{
        //    await durexValidate();
        //    var url = "http://chongzhi.taobao.com/item.do?method=down&itemIds=522871283911&tbcpCrumbs=1fb3d7437580ea5636013be21fab2a3c-a4460a6db84e4";
        //    url = UrlHelper.SetValue(url, "tbcpCrumbs", tbcpCrumbs);
        //    url = UrlHelper.SetValue(url, "itemIds", ids);
        //    using (WBHelper helper = new WBHelper(false))
        //    {
        //        var content = await helper.SynchronousLoadString(url);
        //        return JsonConvert.DeserializeObject<TaoJsonpResult>(content.Data);
        //    }
        //}

        public async Task<TaoUplistResult> upListItem(string ids)
        {
            var validateRet = await durexValidate();
            if (!validateRet)
            {
                AppendText("二次校验失败,请检查网络情况及证书安装情况。");
                return null;
            }
            try
            {
                var url = "http://chongzhi.taobao.com/item.do?method=up&itemIds=522871283911&tbcpCrumbs=1fb3d7437580ea5636013be21fab2a3c-a4460a6db84e4";
                url = UrlHelper.SetValue(url, "tbcpCrumbs", tbcpCrumbs);
                url = UrlHelper.SetValue(url, "itemIds", ids);
                using (WBHelper helper = new WBHelper(false))
                {
                    var content = await this.InvokeTask(helper.SynchronousLoadString, url);
                    return JsonConvert.DeserializeObject<TaoUplistResult>(content.Data);
                }
            }
            catch (Exception ex)
            {
                AppendText("上架商品失败,错误消息:", ex.Message);
                AppendException(ex);
            }
            return null;
        }
Пример #38
0
 /// <summary>
 /// 设置供应商(非AJAX)
 /// </summary>
 /// <param name="wb"></param>
 /// <param name="sup"></param>
 /// <param name="spu"></param>
 /// <param name="profitMin"></param>
 /// <param name="profitMax"></param>
 /// <param name="price">一口价</param>
 /// <param name="itemId"></param>
 /// <returns></returns>
 public async Task<TaoJsonpResult> supplierSave(WBHelper helper, string sup, string spu, string profit, string price, long itemId, string tbcpCrumbs)
 {
     //profitMode=0 保证我赚钱
     //profitMode=2 自定义
     var url = "http://chongzhi.taobao.com/item.do?method=supplierSave&sup={0}&mode=2&spu={1}&itemId={2}&profitMode=2&profitMin={3}&profitMax={4}&price={5}&tbcpCrumbs={6}";
     url = string.Format(url, sup, spu, itemId, profit, profit, price, tbcpCrumbs);
     var content = await helper.SynchronousLoadString(url);
     if (content.LoginRequired)
     {
         this.InvokeAction(ShowLoginWindow, helper.WB);
         return await supplierSave(helper, sup, spu, profit, price, itemId, tbcpCrumbs);
     }
     return JsonConvert.DeserializeObject<TaoJsonpResult>(content.Data);
 }
Пример #39
0
 private async Task<TaoInfo> GetTaoInfo()
 {
     using (var wbHelper = new WBHelper(false))
     {
         var cnt = await this.InvokeTask(wbHelper.SynchronousLoadString, "http://chongzhi.taobao.com/index.do?method=info");
         while (cnt.LoginRequired)
         {
             this.InvokeAction(ShowLoginWindow, wbHelper.WB);
             cnt = await this.InvokeTask(wbHelper.SynchronousLoadString, "http://chongzhi.taobao.com/index.do?method=info");
         }
         var info = JsonConvert.DeserializeObject<TaoInfo>(cnt.Data);
         if (info != null && info.status == 200)
         {
             this.InvokeAction(() =>
             {
                 toolStripStatusLabel余额.Text = "余额:" + info.alipayBalance.ToString("f2");
                 toolStripStatusLabel橱窗.Text = "橱窗:" + info.promotedCount + "/" + info.promotedMax;
                 toolStripStatusLabel出售中.Text = "出售中:" + info.onCount;
                 toolStripStatusLabel仓库中.Text = "仓库中:" + info.offCount;
                 toolStripStatusLabel价格变动.Text = "价格变动:" + info.priceChangedCount;
             });
         }
         return info;
     }
 }
Пример #40
0
 public async Task<bool> SetProductProfit(ProductItem product, Func<ProductItem, decimal> Getprofit, bool forceModify = false, bool isUserOperation = false)
 {
     try
     {
         decimal profit = Getprofit(product);
         SuplierInfo supplier = null;
         if (!string.IsNullOrEmpty(product.SupplierId))
         {
             supplier = product.GetSuplierInfo();
         }
         else
         {
             await CheckIfLoginRequired();
             using (var wbHelper = new WBHelper(true))
             {
                 supplier = await this.InvokeTask(supplierInfo, wbHelper, product.SpuId);
                 if (supplier == null || !supplier.profitData.Any())
                 {
                     AppendText("【{0}】暂无供应商,改价操作取消。", product.ItemName);
                     return false;
                 }
                 product.OnSupplierInfoUpdate(AppDatabase.db.ProductItems, supplier);
             }
         }
         if (supplier != null && supplier.profitData != null && supplier.profitData.Any())
         {
             if (supplier.profitData[0].price == 0)
             {
                 AppendText("【{0}】暂无供应商,改价操作取消。", product.ItemName);
                 return false;
             }
             if (supplier.profitData[0].price == product.进价 && product.利润 == profit && !forceModify)
             {
                 //价格无变化不处理
                 AppendText("商品【{0}】进价及利润无变化,跳过。", product.ItemName);
                 BindDGViewProduct();
                 return true;
             }
             string profitString = "0.00";
             profitString = profit.ToString("f2");
             var oneprice = (supplier.profitData[0].price + profit).ToString("f2");
             await CheckIfLoginRequired();
             using (var wbHelper = new WBHelper(false))
             {
                 var save = await this.InvokeTask(supplierSave, wbHelper, supplier.profitData[0].id, product.SpuId, profitString, oneprice, product.Id, tbcpCrumbs);
                 if (save.status != 200)
                 {
                     AppendText("为商品{0}设置利润时失败。错误消息:{1}", product.Id, save.msg);
                     return false;
                 }
                 else
                 {
                     product.ModifyProfitSubmitted = true;
                     if (isUserOperation)
                     {
                         //备份原始利润
                         product.原利润 = profit;
                     }
                     AppDatabase.db.ProductItems.Update(product);
                     BindDGViewProduct();
                     return true;
                 }
             }
         }
         else
         {
             AppendText("为商品{0}设置利润时失败,因为没有查询到供应商信息。", product.Id);
             return false;
         }
     }
     catch (Exception ex)
     {
         AppendException(ex);
         return false;
     }
 }
Пример #41
0
        private async Task OnLoginSuccess()
        {
            if (!AppSetting.UserSetting.Get<bool>("AutoSelectLoginedAccount") && MessageBox.Show("下次自动登陆?", this.title, MessageBoxButtons.YesNo) == DialogResult.Yes)
            {
                AppSetting.UserSetting.Set<bool>("AutoSelectLoginedAccount", true);
            }
            await Task.Delay(500);
            this.InvokeAction(async () =>
            {
                using (var wbHelper = new WBHelper(false))
                {
                    await this.InvokeTask(wbHelper.SynchronousLoadDocument, IndexUrl);
                    TaoAuthorizedCookieDictionary = CookieHelper.GetAllCookie(wbHelper.WB);
                    WBHelper.Cookie = CookieHelper.ExpandCookieDictionary(TaoAuthorizedCookieDictionary);
                    AppSetting.UserSetting.Set("淘充值饼干", WBHelper.Cookie, true);
                    AppSetting.UserSetting.Set("淘充值饼干时间", DateTime.Now);

                    var apicookie = IECookieHelper.GetGlobalCookie(Server, ".AspNet.ApplicationCookie");
                    AppSetting.UserSetting.Set("API饼干", apicookie, true);
                    AppSetting.UserSetting.Set("API饼干时间", DateTime.Now);

                    IsLogin = true;
                }
                wbLoginMode.TransitionToNext(wbTaoChongZhiMode, wb);
                AppendText("服务登录完成!");
                /*使用cookie连接*/
                ConnectAsync();
            });
        }
Пример #42
0
        private async Task<bool> SyncProductList(string where, string url)
        {
            var productList = new List<ProductItem>();
            int page = 1;
            IHtmlDocument xdoc = null;
            ApiPagedResult<List<ProductItem>> pagedList = new ApiPagedResult<List<ProductItem>>();
            while (pagedList.Success && pagedList.HasMore)
            {

                var nextUrl = UrlHelper.SetValue(url, "page", page.ToString());
                using (var helper = new WBHelper(false))
                {
                    try
                    {
                        var result = await this.InvokeTask(helper.SynchronousLoadDocument, nextUrl);
                        while (result.LoginRequired)
                        {
                            this.InvokeAction(ShowLoginWindow, helper.WB);
                            result = await this.InvokeTask(helper.SynchronousLoadDocument, nextUrl);
                        }
                        xdoc = HtmlParser.Parse(result.Data.Body.InnerHtml);
                        var table = xdoc.GetElementById("main").FindFirst(".stock-table");
                        pagedList = ProductItemHelper.GetProductItemList(table, page);
                        tbcpCrumbs = xdoc.FindSingle("#tbcpCrumbs").Attribute("value").AttributeValue;
                        xdoc = null;
                        result = null;
                        SetTaskName("同步{0}商品第{1}页({2}个)", where, page, pagedList.Data.Count);
                        productList.AddRange(pagedList.Data);
                        page++;
                    }
                    catch (Exception ex)
                    {
                        pagedList.Success = false;
                        helper.Dispose();
                        //AppendException(ex);
                    }
                }
                if (!pagedList.Success)
                {
                    AppendText("同步{0}商品第{1}页出错,{2}", where, page, pagedList.Message);
                    if (MessageBox.Show(string.Format("同步{0}商品第{1}页出错,是否重试?", where, page), Text, MessageBoxButtons.YesNo) == DialogResult.Yes)
                    {
                        pagedList.Success = true;
                        continue;
                    }
                }

            }
            foreach (var item in productList)
            {
                item.UpdateAt = ProductSyncTime;
                item.Where = where;
                item.原利润 = item.利润 = item.一口价 - item.进价;
            }
            AppDatabase.UpsertProductList(productList);
            BindDGViewProduct();
            SetTaskName("就绪");
            AppendText("同步{0}商品完成!({1}个)", where, productList.Count);
            return true;
        }