Beispiel #1
0
        public ActionResult Delete(long id)
        {
            // is order in use
            var order = repository.GetOrder(subdomainid.Value, id);

            if (order == null)
            {
                return(SendJsonErrorResponse("Order not found"));
            }

            var transaction = new Transaction(order, repository, sessionid.Value);
            var status      = transaction.GetOrderStatus();

            if (status != OrderStatus.DRAFT && status != OrderStatus.SENT)
            {
                return(SendJsonErrorResponse("Unable to delete. Order has already been viewed."));
            }

            try
            {
#if LUCENE
                var indexer = new LuceneWorker(db, MASTERdomain.ToIdName());
                indexer.DeleteFromIndex(LuceneIndexType.TRANSACTION, id);
#endif
                repository.UpdateCounters(subdomainid.Value, -1, CounterType.ORDERS_SENT);

                transaction.DeleteOrder();
            }
            catch (Exception ex)
            {
                return(SendJsonErrorResponse(ex));
            }

            return(Json(id.ToJsonOKData()));
        }
Beispiel #2
0
        /// <summary>
        /// resends verification email
        /// </summary>
        /// <returns></returns>
        public ActionResult Verification()
        {
            var user     = MASTERdomain.organisation.users.First();
            var viewdata = new ViewDataDictionary()
            {
                { "host", MASTERdomain.ToHostName().ToDomainUrl() },
                { "confirmCode", user.confirmationCode },
                { "email", user.email }
            };

            EmailHelper.SendEmailNow(EmailViewType.ACCOUNT_CONFIRMATION, viewdata, "New Account Details and Email Verification Link",
                                     user.email, user.ToFullName(), null);
            return(new EmptyResult());
        }
Beispiel #3
0
        public ActionResult Sitemap()
        {
            if (!subdomainid.HasValue)
            {
                return(RedirectToAction("NotFound", "Error"));
            }
            Response.ContentType = "text/xml";
            var ms   = new MemoryStream();
            var objX = new XmlTextWriter(ms, Encoding.UTF8);

            objX.WriteStartDocument();
            objX.WriteStartElement("urlset");
            objX.WriteAttributeString("xmlns", "http://www.sitemaps.org/schemas/sitemap/0.9");

            objX.WriteStartElement("url");
            objX.WriteElementString("loc", accountHostname.ToDomainUrl("", true));
            objX.WriteElementString("lastmod", DateTime.UtcNow.AddDays(-1).ToString("yyyy-MM-dd"));
            objX.WriteElementString("changefreq", "daily");
            objX.WriteElementString("priority", "0.8");
            objX.WriteEndElement();

            if (MASTERdomain.IsStoreEnabled())
            {
                var products = repository.GetStoreProducts(subdomainid.Value);

                foreach (var product in products)
                {
                    string url = product.ToLiquidProductUrl();
                    objX.WriteStartElement("url");
                    objX.WriteElementString("loc", accountHostname.ToDomainUrl(url, true));
                    if (product.updated.HasValue)
                    {
                        objX.WriteElementString("lastmod", product.updated.Value.ToString("yyyy-MM-dd"));
                    }
                    objX.WriteElementString("changefreq", "daily");
                    objX.WriteElementString("priority", "0.7");
                    objX.WriteEndElement();
                }
            }
            objX.WriteEndElement(); // urlset
            objX.WriteEndDocument();
            objX.Flush();
            objX.Close();
            return(Content(Encoding.UTF8.GetString(ms.ToArray())));
        }
Beispiel #4
0
        public ActionResult Index()
        {
            var viewdata = new ShippingViewModel(baseviewmodel)
            {
                shippingProfiles = MASTERdomain.ToShippingProfiles(),
                ebay_sites       = new[] { new SelectListItem()
                                           {
                                               Text = "Select site", Value = ""
                                           } }
                .Union(EbayService.SupportedSites.Select(x => new SelectListItem()
                {
                    Text  = x.ToString(),
                    Value = x.ToString()
                }))
            };

            return(View(viewdata));
        }
Beispiel #5
0
        public ActionResult UpdateDomain(string domainName)
        {
            // custom domain
            if (!string.IsNullOrEmpty(domainName))
            {
                domainName = domainName.Replace("http://", "");
                domainName = domainName.Replace("https://", "");
                // check that domain does not already exist
                var domain = repository.GetSubDomains().Where(x => x.customDomain == domainName).SingleOrDefault();
                if (domain != null && domain.id != subdomainid.Value)
                {
                    return(Json("Domain name is currently in use".ToJsonFail()));
                }
                // check for invalid domain name
                if (domainName.EndsWith("tradelr.com"))
                {
                    return(Json("Domain name is invalid".ToJsonFail()));
                }
                // check that domain name resolves to our server ip
                try
                {
                    var addresses = Dns.GetHostAddresses(domainName).Select(x => x.ToString()).ToArray();
                    if (!addresses.Contains(GeneralConstants.SERVER_IP))
                    {
                        return
                            (Json(string.Format("{0} has not been configured to point to {1}", domainName,
                                                GeneralConstants.SERVER_IP).ToJsonFail()));
                    }
                }
                catch (Exception ex)
                {
                    Syslog.Write(ex);
                    return
                        (Json(
                             "Invalid domain name entered. Domain name should be in the format www.yourdomain.com".ToJsonFail()));
                }
            }

            MASTERdomain.customDomain = domainName;

            repository.Save();

            return(Json(MASTERdomain.ToHostName().ToDomainUrl("/login").ToJsonOKData()));
        }
        public ActionResult Delete(string id)
        {
            var contactids = id.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Select(long.Parse);
            var successIDs = new List <long>();

            foreach (var contactid in contactids)
            {
                if (repository.IsContactInUse(contactid))
                {
                    continue;
                }
#if LUCENE
                var indexer = new LuceneWorker(db, MASTERdomain.ToIdName());
                indexer.DeleteFromIndex(LuceneIndexType.CONTACTS, contactid);
#endif
                // delete necessary data
                repository.DeleteUser(contactid, subdomainid.Value);
                successIDs.Add(contactid);
            }

            return(Json(successIDs.ToJsonOKData()));
        }
Beispiel #7
0
        public ActionResult Ship(long id, string trackingno, string trackingAddress, string shippingService, string shipwire)
        {
            try
            {
                var order = repository.GetOrder(subdomainid.Value, id);
                if (order == null)
                {
                    return(Json("Order not found".ToJsonFail()));
                }

                var transaction = new Transaction(order, repository, sessionid.Value);

                if (!string.IsNullOrEmpty(shipwire))
                {
                    if (!transaction.HasValidShippingAddress())
                    {
                        return(SendJsonErrorResponse("The destination shipping address is incomplete."));
                    }
                    var shipwireService = transaction.GetShipWireService();
                    var shipwireItems   = order.ToShipwireItems();
                    var shippingMethod  = order.shipwireShippingid;
                    var address         = transaction.GetShipwireShippingAddress();
                    shipwireService.CreateOrder(transaction.GetID().ToString(), shippingMethod, shipwireItems, address);
                    var resp = shipwireService.SubmitOrder();

                    // got response?
                    if (resp == null)
                    {
                        return(SendJsonErrorResponse("No response from Shipwire. Please try again later."));
                    }

                    // check for exceptions
                    var exceptions = resp.GetExceptions();
                    if (exceptions.Count != 0)
                    {
                        return(SendJsonErrorResponse(exceptions[transaction.GetID().ToString()]));
                    }

                    // check for one order
                    var submittedOrder = resp.OrderInformation.Order[0];

                    transaction.UpdateOrderStatus(OrderStatus.SHIPPED);

                    transaction.AddShipwireTransaction(submittedOrder.number.ToString(), XElement.Parse(shipwireService.GetXmlResponse()));

                    transaction.SaveUpdatedTransaction();
                }
                else
                {
                    transaction.UpdateOrderAsShipped(shippingService, trackingno, trackingAddress);

                    // notify buyer that order has been shipped
                    var viewloc      = MASTERdomain.ToHostName().ToDomainUrl(transaction.GetOrderLink());
                    var emailContent = new OrderShippedEmailContent
                    {
                        orderNumber     = transaction.GetOrderNumber(),
                        shippingAddress = transaction.GetShippingAddress().ToHtmlString(),
                        sender          = transaction.GetOwner().ToEmailName(false),
                        viewloc         = viewloc
                    };

                    string subject = "Invoice #" + emailContent.orderNumber + " has been shipped";
                    var    msg     = new Message(transaction.GetReceiver(), transaction.GetOwner(), subdomainid.Value);
                    var    result  = msg.SendMessage(this, repository, EmailViewType.ORDER_SHIPPED, emailContent, subject, viewloc);

                    if (!result.success)
                    {
                        Syslog.Write(result.message);
                    }
                }

                return(Json("".ToJsonOKMessage()));
            }
            catch (Exception ex)
            {
                return(SendJsonErrorResponse(ex));
            }
        }
        public ActionResult Update(long?id, string email, string address, string city, long?citySelected, string coPhone,
                                   string companyName, IEnumerable <int?> country, string fax, string firstName, int?permissions,
                                   string gender, string lastName, string notes, string phone, string postcode, string title, string password,
                                   IEnumerable <string> states_canadian, IEnumerable <string> states_other, IEnumerable <string> states_us,
                                   string billing_first_name, string billing_last_name, string billing_company, string billing_address, string billing_city, long?billing_citySelected,
                                   string billing_postcode, string billing_phone,
                                   string shipping_first_name, string shipping_last_name, string shipping_company, string shipping_address, string shipping_city, long?shipping_citySelected, string shipping_postcode, string shipping_phone)
        {
            if (!id.HasValue)
            {
                return(SendJsonErrorResponse("Missing ID"));
            }

            try
            {
                var contact = repository.GetContact(subdomainid.Value, id.Value);

                if (contact == null)
                {
                    return(SendJsonErrorResponse("Missing ID"));
                }

                var original = contact.ToModel(sessionid, subdomainid.Value);

                // no need to take into account whether an organisation is there because it will always be created
                contact.organisation1.address = address.Trim();
                if (citySelected.HasValue)
                {
                    var mcity = repository.GetCity(citySelected.Value);
                    contact.organisation1.MASTERcity = mcity;
                }
                else if (!string.IsNullOrEmpty(city))
                {
                    contact.organisation1.MASTERcity = repository.AddCity(city);
                }
                if (coPhone != null)
                {
                    contact.organisation1.phone = coPhone;
                }
                if (companyName != null)
                {
                    contact.organisation1.name = companyName;
                }
                if (country != null)
                {
                    contact.organisation1.country = country.ElementAtOrDefault(0);
                    contact.organisation1.state   = AddressHandler.GetState(country.ElementAtOrDefault(0), states_us.ElementAtOrDefault(0), states_canadian.ElementAtOrDefault(0), states_other.ElementAtOrDefault(0));
                }
                if (fax != null)
                {
                    contact.organisation1.fax = fax;
                }

                if (email != null)
                {
                    contact.email = email;
                }
                if (firstName != null)
                {
                    contact.firstName = firstName;
                }
                if (gender != null)
                {
                    contact.gender = gender;
                }
                if (lastName != null)
                {
                    contact.lastName = lastName;
                }
                if (phone != null)
                {
                    contact.phoneNumber = phone;
                }
                if (postcode != null)
                {
                    contact.organisation1.postcode = postcode;
                }

                // handle addresses
                var addressHandler = new AddressHandler(contact.organisation1, repository);
                addressHandler.SetShippingAndBillingAddresses(billing_first_name,
                                                              billing_last_name,
                                                              billing_company,
                                                              billing_address,
                                                              billing_city,
                                                              billing_citySelected,
                                                              billing_postcode,
                                                              billing_phone,
                                                              country.ElementAtOrDefault(1),
                                                              states_canadian.ElementAtOrDefault(1),
                                                              states_other.ElementAtOrDefault(1),
                                                              states_us.ElementAtOrDefault(1),
                                                              shipping_first_name,
                                                              shipping_last_name,
                                                              shipping_company,
                                                              shipping_address,
                                                              shipping_city,
                                                              shipping_citySelected,
                                                              shipping_postcode,
                                                              shipping_phone,
                                                              country.ElementAtOrDefault(2),
                                                              states_canadian.ElementAtOrDefault(2),
                                                              states_other.ElementAtOrDefault(2),
                                                              states_us.ElementAtOrDefault(2),
                                                              false);

                if (title != null)
                {
                    contact.title = title;
                }

                if (!string.IsNullOrEmpty(password))
                {
                    // password specified
                    contact.passwordHash = Crypto.Utility.ComputePasswordHash(email + password);
                }
                else
                {
                    // password removed
                    contact.passwordHash = null;
                }

                // list of fields that are allowed to be modified
                if (notes != null)
                {
                    contact.notes = notes;
                }

                // handle permissions
                if (permissions.HasValue)
                {
                    contact.permissions = permissions;
                }

                repository.AddActivity(sessionid.Value,
                                       new ActivityMessage(id.Value, sessionid,
                                                           ActivityMessageType.CONTACT_UPDATED,
                                                           new HtmlLink(contact.ToEmailName(true), id.Value).ToContactString()), subdomainid.Value);

                repository.Save();
#if LUCENE
                // update search index
                var indexer = new LuceneWorker(db, MASTERdomain.ToIdName());
                indexer.AddToIndex(LuceneIndexType.CONTACTS, contact);
#endif
                // get changed and store in database
                var changed  = contact.ToModel(sessionid, subdomainid.Value);
                var comparer = new CompareObject();
                var diff     = comparer.Compare(original, changed);
                if (diff.Count != 0)
                {
                    repository.AddChangeHistory(sessionid.Value, contact.id, ChangeHistoryType.CONTACT, diff);
                }
            }
            catch (Exception ex)
            {
                return(SendJsonErrorResponse(ex));
            }
            return(Json(id.ToJsonOKData()));
        }