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())); }
/// <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()); }
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()))); }
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)); }
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())); }
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())); }