public OrderView(order o, organisation s, string receiverAddress, long sessionid, TransactionType type) { order = o.ToModel(type, sessionid); sender = s.ToFullOrganisationAddress(); banner = s.logo.HasValue ? s.image.ToModel(Imgsize.BANNER).url.ToHtmlImage() : ""; receiver = receiverAddress; currency = o.currency.ToCurrency(); // handle addresses if (!o.allDigitalOrderItems()) { order.billingAddress = o.address1.ToHtmlString(); order.shippingAddress = o.address.ToHtmlString(); } if (o.shipwireTransaction != null) { submittedToShipwire = true; } transactionID = (o.transactions ?? o.transactions1.First()).id; // init commentrs for new inline format comments = Enumerable.Empty <OrderComment>(); }
public void CreateEmptyOrder(long onumber, organisation org, TransactionType type) { orderNumber = onumber; isNew = true; orderDate = DateTime.UtcNow; terms = org.MASTERsubdomain.paymentTerms; TransactionType = type; currency = org.MASTERsubdomain.currency.ToCurrency(); }
public UnitTest1() { userWithNoName = new user(); userOrg = new organisation() { name = "Test Org Name" }; userOrg.users.Add(userWithNoName); }
/// <summary> /// /// </summary> /// <param name="org"></param> /// <param name="standAlone">true: includes ul tag</param> /// <returns></returns> public static string ToOrganisationAddress(this organisation org, bool standAlone, bool useBreaks = false) { var sb = new StringBuilder(); if (standAlone) { sb.Append("<ul>"); } if (!string.IsNullOrEmpty(org.address)) { if (useBreaks) { sb.AppendFormat("{0}<br />", org.address.ToHtmlBreak()); } else { sb.AppendFormat("<li>{0}</li>", org.address.ToHtmlBreak()); } } if (useBreaks) { sb.AppendFormat("{0}<br />{1} {2}<br />", org.city.HasValue ? org.MASTERcity.name : "", org.state.ToStateName(org.country.HasValue?org.country.Value.ToString():""), org.postcode); } else { sb.AppendFormat("<li>{0}</li><li>{1} {2}</li>", org.city.HasValue ? org.MASTERcity.name : "", org.state.ToStateName(org.country.HasValue ? org.country.Value.ToString() : ""), org.postcode); } if (org.country.HasValue) { if (useBreaks) { sb.AppendFormat("{0}<br />", Country.GetCountry(org.country.Value).name); } else { sb.AppendFormat("<li>{0}</li>", Country.GetCountry(org.country.Value).name); } } if (standAlone) { sb.Append("</ul>"); } return(sb.ToString()); }
public static GoogleMapData ToGoogleMap(this organisation row) { return(new GoogleMapData { latitude = row.latitude.HasValue ? row.latitude.Value : 0, longtitude = row.longtitude.HasValue ? row.longtitude.Value : 0, mapZoom = row.zoom.HasValue ? row.zoom.Value : 0, country = row.country, orgid = row.id }); }
public static Organisation ToModel(this organisation org) { return(new Organisation() { address = org.address, city = org.city.HasValue?org.MASTERcity.name:"", companyName = org.name, coPhone = org.phone, country = org.country, fax = org.fax, id = org.id.ToString(), postcode = org.postcode, state = org.state }); }
public ActionResult View(long?id) { var order = repository.GetOrder(subdomainid.Value, id.Value); organisation sender = order.user1.organisation1; var receiverAddress = order.receiverAddress; if (order.receiverUserid.HasValue) { receiverAddress = order.user.organisation1.ToFullOrganisationAddress(); } // log activity // only log this if viewed by the receiver if (order.receiverUserid.HasValue && sessionid.Value == order.receiverUserid.Value && order.status == OrderStatus.SENT.ToString()) { repository.AddActivity(order.owner, new ActivityMessage(order.id, order.owner, ActivityMessageType.ORDER_VIEWED, new HtmlLink(order.orderNumber.ToString("D8"), order.id).ToTransactionString(TransactionType.ORDER), new HtmlLink(order.user.ToEmailName(true), order.receiverUserid.Value).ToContactString()), sender.subdomain); repository.UpdateOrderStatus(order.id, TransactionType.ORDER, null, sessionid.Value, OrderStatus.VIEWED); } var primaryView = new OrderView(order, sender, receiverAddress, sessionid.Value, TransactionType.ORDER); primaryView.SetStatusRibbon(!primaryView.order.isOwner); primaryView.SetButtonsToShow(TransactionType.ORDER, !primaryView.order.isOwner); primaryView.comments = order.ToTransaction().comments.OrderByDescending(x => x.created).ToModel(true); if (Request.HttpMethod == "POST") { return(View("orderView", primaryView)); } var printView = new PrintView(baseviewmodel) { transactionID = order.ToTransaction().id, primaryView = primaryView }; return(View("PrintView", printView)); }
public ActionResult View(long?id) { var invoice = repository.GetOrder(subdomainid.Value, id.Value); organisation sender = invoice.user1.organisation1; var receiverAddress = invoice.receiverAddress; if (invoice.receiverUserid.HasValue) { receiverAddress = invoice.user.organisation1.ToFullOrganisationAddress(); } // log activity if (invoice.receiverUserid.HasValue && sessionid.Value == invoice.receiverUserid.Value && invoice.status == OrderStatus.SENT.ToString()) { // update status repository.AddActivity(invoice.owner, new ActivityMessage(invoice.id, invoice.owner, ActivityMessageType.INVOICE_VIEWED, new HtmlLink(invoice.orderNumber.ToString("D8"), invoice.id).ToTransactionString(TransactionType.INVOICE), new HtmlLink(invoice.user.ToEmailName(true), invoice.receiverUserid.Value).ToContactString()), sender.subdomain); repository.UpdateOrderStatus(id.Value, TransactionType.INVOICE, null, sessionid.Value, OrderStatus.VIEWED); } var primaryView = new OrderView(invoice, sender, receiverAddress, sessionid.Value, TransactionType.INVOICE); primaryView.SetStatusRibbon(!primaryView.order.isOwner); primaryView.SetButtonsToShow(TransactionType.INVOICE, !primaryView.order.isOwner); primaryView.comments = invoice.ToTransaction().comments.OrderByDescending(x => x.created).ToModel(true); if (Request.HttpMethod == "POST") { return(View("invoiceView", primaryView)); } var printView = new PrintView(baseviewmodel) { transactionID = invoice.ToTransaction().id, primaryView = primaryView }; return(View("PrintView", printView)); }
public static OpenGraph ToOpenGraph(this organisation org, product p, article a) { var graph = new OpenGraph { fbid = org.users.First().FBID, sitename = org.MASTERsubdomain.storeName, description = org.motd, address = org.address, countryname = org.country.HasValue ? Country.GetCountry(org.country.Value).name : "", email = "", fax = org.fax, latitude = org.latitude.HasValue ? org.latitude.ToString() : "", longtitude = org.longtitude.HasValue ? org.longtitude.ToString() : "", locality = org.city.HasValue ? org.MASTERcity.name : "", region = "", postcode = org.postcode, phone = org.phone, }; if (p != null) { graph.type = "product"; graph.title = p.title; graph.url = org.MASTERsubdomain.ToHostName().ToDomainUrl(p.ToLiquidProductUrl()); graph.image = p.thumb.HasValue ? org.MASTERsubdomain.ToHostName().ToDomainUrl(Img.by_size(p.product_image.url, Imgsize.SMALL)) : org.MASTERsubdomain.ToHostName().ToDomainUrl(GeneralConstants.PHOTO_NO_THUMBNAIL); } else if (a != null) { graph.type = "article"; graph.title = a.title; graph.url = org.MASTERsubdomain.ToHostName().ToDomainUrl(a.ToLiquidUrl()); } else { graph.type = "company"; graph.title = org.MASTERsubdomain.storeName; graph.url = org.MASTERsubdomain.ToHostName().ToDomainUrl(); } return(graph); }
public static string ToFullOrganisationAddress(this organisation org) { var sb = new StringBuilder(); sb.Append("<ul><li>"); sb.Append(org.name); sb.Append("</li>"); sb.Append(org.ToOrganisationAddress(false)); if (!string.IsNullOrEmpty(org.phone)) { sb.Append("<li>"); sb.Append(org.phone); sb.Append("</li>"); } return(sb.ToString()); }
public ActionResult Import(ContactBasic[] contacts) { foreach (var contact in contacts) { // check if email already added var emailExist = repository.IsEmailInUse(contact.email, subdomainid.Value); if (emailExist) { continue; } organisation o = new organisation { subdomain = subdomainid.Value, address = contact.address, name = contact.email }; long addedOrgId = repository.AddOrganisation(o); // add user var u = new user { created = DateTime.UtcNow, role = (int)UserRole.USER, email = contact.email, firstName = contact.firstName, lastName = contact.lastName, phoneNumber = contact.phone, organisation = addedOrgId, viewid = Crypto.Utility.GetRandomString(), permissions = (int)UserPermission.USER }; repository.AddUser(u); // update total contacts count repository.UpdateCounters(subdomainid.Value, 1, CounterType.CONTACTS_PRIVATE); } repository.Save(); return(Json("".ToJsonOKMessage())); }
public ActionResult Index() { // return front page if (!subdomainid.HasValue) { return(View()); } // this point onward we have a subdomainid organisation org = MASTERdomain.organisation; // subdomain does not exist if (org == null) { return(Redirect(GeneralConstants.HTTP_HOST)); } // check if account has been setup properly if (role.HasFlag(UserRole.CREATOR) && !MASTERdomain.currency.HasValue) { return(RedirectToAction("setup", "register", new { Area = "" })); } // do we return store view which is on an unsecure connection if (IsStoreEnabled || sessionid.HasValue) { var template = CreateLiquidTemplate("index", "Welcome"); template.InitContentTemplate("templates/index.liquid"); return(Content(template.Render())); } if (sessionid == null) { return(RedirectToAction("Index", "login")); } // this is actually unreachable // user is logged in return(RedirectToAction("Index", "dashboard", new { Area = "dashboard" })); }
public void ImportFacebookContacts() { var query = string.Format( "SELECT uid, first_name, last_name, current_location, pic_big, profile_url, proxied_email, sex FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = {0})", api.Application.Session.UserId); var rows = api.Fql.Query <users_getInfo_response>(query); foreach (var row in rows.user) { try { var usr = repository.GetUserByFBID(row.uid.Value.ToString(), subdomainid); if (usr != null) { continue; } var firstname = row.first_name; var lastname = row.last_name; if (string.IsNullOrEmpty(firstname) && string.IsNullOrEmpty(lastname)) { continue; } var org = new organisation { subdomain = subdomainid, name = string.Format("{0} {1}", firstname, lastname) }; var friend = new user() { role = UserRole.USER.ToInt(), email = "", proxiedEmail = row.proxied_email, firstName = firstname, lastName = lastname, gender = row.sex, organisation = repository.AddOrganisation(org), externalProfilePhoto = row.pic_big, externalProfileUrl = row.profile_url, FBID = row.uid.Value.ToString(), viewid = Crypto.Utility.GetRandomString(), permissions = (int)UserPermission.USER }; repository.UpdateCounters(subdomainid, 1, CounterType.CONTACTS_PRIVATE); repository.AddUser(friend); friend.externalProfilePhoto.ReadAndSaveFromUrl(subdomainid, friend.id, friend.id, PhotoType.PROFILE); } catch (Exception ex) { Syslog.Write(ex); } } // mail user var owner = repository.GetUserById(ownerid, subdomainid); var msg = new message.Message(owner, null, subdomainid); msg.SendMessage(null, repository, EmailViewType.GENERIC, "Your Facebook contacts have been successfully imported", "Import Contacts"); }
public AddressHandler(organisation o, ITradelrRepository repository) { this.repository = repository; target_org = o; }
public ActionResult Create(long?profilePhotoID, string password, string organisationPhotoID, string address, string city, long?citySelected, string coPhone, int permissions, string companyName, string contactList, int?country, string email, string fax, string firstName, string gender, string lastName, string notes, string phone, string postcode, string title, long?existingOrg, string states_canadian, string states_other, string states_us, bool sendemail) { // add organisation even if fields are empty if (!string.IsNullOrEmpty(email)) { // check if email already added var emailExist = repository.IsEmailInUse(email, subdomainid.Value); if (emailExist) { return(Json("Email has already been added".ToJsonFail())); } } organisation o; long addedOrgID; if (!existingOrg.HasValue) { o = new organisation { subdomain = subdomainid.Value, address = address.Trim(), phone = coPhone, name = companyName, fax = fax, postcode = postcode }; if (!string.IsNullOrEmpty(organisationPhotoID)) { o.logo = long.Parse(organisationPhotoID); } if (citySelected.HasValue) { o.city = citySelected.Value; } else if (!string.IsNullOrEmpty(city)) { o.city = repository.AddCity(city).id; } if (country != null) { o.country = country; o.state = AddressHandler.GetState(country, states_us, states_canadian, states_other); } addedOrgID = repository.AddOrganisation(o); // update shipping and billing addresses var addressHandler = new AddressHandler(o, repository); addressHandler.CopyShippingAndBillingAddressFromOrgAddress("", ""); } else { o = repository.GetOrganisation(existingOrg.Value, subdomainid.Value); if (o == null) { return(SendJsonErrorResponse("Company is invalid")); } addedOrgID = o.id; } // add user var u = new user { created = DateTime.UtcNow, role = (int)UserRole.USER, email = email, passwordHash = Crypto.Utility.ComputePasswordHash(email + password), firstName = firstName, gender = gender, lastName = lastName, notes = notes, phoneNumber = phone, title = title, organisation = addedOrgID, viewid = Crypto.Utility.GetRandomString() }; // only allow user to create user with permissions equal to or less than themselves var currentuser = repository.GetUserById(sessionid.Value, subdomainid.Value); var allowedPermission = currentuser.permissions & permissions; u.permissions = allowedPermission; try { if (profilePhotoID.HasValue) { u.profilePhoto = profilePhotoID.Value; } repository.AddUser(u); // need to update entry in images table too since contextid will be the site creator's if (profilePhotoID.HasValue) { var dbImage = repository.GetImage(profilePhotoID.Value); if (dbImage != null) { dbImage.contextID = u.id; } } // log activity repository.AddActivity(sessionid.Value, new ActivityMessage(u.id, sessionid, ActivityMessageType.CONTACT_NEW, new HtmlLink(u.ToEmailName(true), u.id).ToContactString()), subdomainid.Value); // update total contacts count repository.UpdateCounters(subdomainid.Value, 1, CounterType.CONTACTS_PRIVATE); // add contact list filter if (!string.IsNullOrEmpty(contactList)) { var cf = new contactGroupMember() { groupid = long.Parse(contactList), userid = u.id }; repository.AddContactGroupMember(cf); } // email contact that was just added if (!string.IsNullOrEmpty(email) && sendemail) { var me = repository.GetUserById(sessionid.Value, subdomainid.Value); var viewmodel = new ContactNewViewModel { creatorEmail = me.email, creatorName = me.ToEmailName(true), hostName = accountHostname, email = email, password = password, note = notes, profile = u.ToProfileUrl() }; // link to view profile this.SendEmail(EmailViewType.CONTACT_NEWENTRY, viewmodel, "New Profile created", u.GetEmailAddress(), u.ToFullName(), u); } } catch (Exception ex) { return(SendJsonErrorResponse(ex)); } // return contact ID & org ID return(Json(new { uid = u.id, oid = addedOrgID }.ToJsonOKData())); }
public JsonData CreateAccountWithLoginPassword() { // check fields are not empty if (string.IsNullOrEmpty(email) || string.IsNullOrEmpty(passwordConfirm) || string.IsNullOrEmpty(password) || string.IsNullOrEmpty(loginPage)) { return("Some fields are missing".ToJsonFail()); } // verify subdomain is available loginPage = loginPage.Trim().ToLower(); // BUG need to mark subdomain as not available in case of race condition if (!repository.IsDomainAvailable(loginPage)) { return("The selected site name is not available. Please choose another name.".ToJsonFail()); } // check passwords if (string.Compare(password, passwordConfirm) != 0) { return("Passwords do not match".ToJsonFail()); } // verify that email has not been used to register another account if (repository.GetUsersByEmail(email).SingleOrDefault(x => (x.role & (int)UserRole.CREATOR) != 0) != null) { Syslog.Write("Email address in use: " + email); return("Email address is currently in use".ToJsonFail()); } // check affiliate ID if (!string.IsNullOrEmpty(affiliate)) { var referrer = repository.GetSubDomains().SingleOrDefault(x => x.affiliateID == affiliate); if (referrer == null) { Syslog.Write("Invalid Affiliate ID: " + affiliate); return("Invalid Affiliate ID".ToJsonFail()); } mastersubdomain.affiliateReferrer = referrer.id; } usr = new user { role = (int)UserRole.TENTATIVE, viewid = Utility.GetRandomString(), permissions = (int)UserPermission.ADMIN, email = email, firstName = "", lastName = "" }; repository.AddMasterSubdomain(mastersubdomain); // hash is created later // create organisation first var org = new organisation { subdomain = mastersubdomain.id, name = "" }; usr.organisation = repository.AddOrganisation(org); org.users.Add(usr); mastersubdomain.organisation = org; CreateDataStructures(); return(mastersubdomain.ToHostName().ToDomainUrl("/login").ToJsonOKData()); }
public ActionResult demo_create() { var account = new Account(repository, "*****@*****.**", "1234%^&*", "1234%^&*", "demo", AccountPlanType.ULTIMATE, ""); var status = account.CreateAccountWithLoginPassword(); if (!status.success) { return(Json(status)); } // add currency and timezoneinfo var sd = repository.GetSubDomains().Single(x => x.name == "demo"); sd.organisation.name = "Demo Company"; sd.currency = 432; // USD sd.flags |= (int)SubdomainFlags.STORE_ENABLED; var creator = sd.organisation.users.First(); creator.timezone = "Eastern Standard Time"; creator.role = (int)UserRole.ADMIN; repository.Save("demo_create"); // add test org var o = new organisation { subdomain = sd.id, address = "12 Demo Road", phone = "012 345678", name = "Acme & Co.", fax = "87 654321", postcode = "12345", }; var addedOrgID = repository.AddOrganisation(o); // add user var u = new user { created = DateTime.UtcNow, email = "*****@*****.**", passwordHash = Utility.ComputePasswordHash("*****@*****.**"), firstName = "demo", lastName = "account", organisation = addedOrgID, viewid = Utility.GetRandomString(), permissions = (int)(UserPermission.NETWORK_STORE | UserPermission.INVENTORY_ADD | UserPermission.INVENTORY_MODIFY | UserPermission.INVENTORY_VIEW | UserPermission.INVOICES_ADD | UserPermission.TRANSACTION_MODIFY | UserPermission.TRANSACTION_VIEW | UserPermission.ORDERS_ADD | UserPermission.CONTACTS_ADD | UserPermission.CONTACTS_MODIFY | UserPermission.CONTACTS_VIEW), role = (int)UserRole.USER }; #if !DEBUG // not created when debugging because we want to test product import u.timezone = "Eastern Standard Time"; #else u.permissions |= (int)UserPermission.NETWORK_SETTINGS; #endif repository.AddUser(u); // log activity repository.AddActivity(u.id, new ActivityMessage(u.id, u.id, ActivityMessageType.CONTACT_NEW, new HtmlLink(u.ToEmailName(true), u.id).ToContactString()), sd.id); // update total contacts count repository.UpdateCounters(sd.id, 1, CounterType.CONTACTS_PRIVATE); // import demo products List <ProductInfo> productsList; using (var fs = new FileStream( GeneralConstants.APP_ROOT_DIR + "/Content/templates/demo/demo_products.xls", FileMode.Open, FileAccess.Read)) { var importer = new ProductImport(); productsList = importer.Import(fs, u.id, sd.id); } repository.AddProducts(productsList, sd.id); return(Json("Demo account created".ToJsonOKMessage())); }
public ActionResult Index() { var errors = new FormErrors(); foreach (string entry in Request.Form.Keys) { var value = Request.Form[entry]; if (string.IsNullOrEmpty(value)) { errors.messages[entry] = "Value is missing"; errors.Add(entry); } } var form = new Form(); if (errors.Count != 0) { form.posted_successfully = false; form.errors = errors; } else { form.posted_successfully = true; } TempData["form"] = form; var storeOwner = MASTERdomain.organisation.users.First(); var formType = Request.Form["form_type"]; var email = Request.Form["email"]; if (!string.IsNullOrEmpty(formType) && formType == "customer") { // add contact to contact list // check if email exists var usr = repository.GetUsersByEmail(email, subdomainid.Value).SingleOrDefault(); if (usr == null) { // create org var org = new organisation { name = email, subdomain = subdomainid.Value }; var orgid = repository.AddOrganisation(org); // create user usr = new user { role = (int)UserRole.USER, email = email, viewid = Crypto.Utility.GetRandomString(), permissions = (int)UserPermission.USER, organisation = orgid }; repository.AddUser(usr); } // add to contact group if (!string.IsNullOrEmpty(Request.Form["group"])) { var group = MASTERdomain.contactGroups.Where(x => x.title == Request.Form["group"]).SingleOrDefault(); if (group == null) { group = new contactGroup() { title = Request.Form["group"] }; MASTERdomain.contactGroups.Add(group); } if (group.contactGroupMembers.AsQueryable().Where(x => x.userid == usr.id).SingleOrDefault() == null) { group.contactGroupMembers.Add(new contactGroupMember { userid = usr.id }); } } repository.Save(); } else { // send notification email to store owner var viewdata = new NewMessage { name = Request.Form["name"], email = email, message = Request.Form["body"].ToHtmlBreak() }; this.SendEmail(EmailViewType.STORE_NEWMESSAGE, viewdata, "New Store Message", storeOwner.GetEmailAddress(), storeOwner.ToFullName(), null); } return(Redirect(Request.UrlReferrer.ToString())); }
public ActionResult NewAccount(string code, string id, string identifier, PageType pagetype) { var client = new OAuthFacebook(GeneralConstants.FACEBOOK_API_KEY, GeneralConstants.FACEBOOK_API_SECRET, HttpUtility.UrlEncode( string.Format( "{0}/newaccount/{1}?identifier={2}&pagetype={3}", GeneralConstants.FACEBOOK_APP_URL, id, identifier, pagetype)), "read_stream,email,publish_stream,offline_access,manage_pages"); // starting our authorisation process if (string.IsNullOrEmpty(code)) { return(RedirectToAction("Redirect", new{ url = client.AuthorizationLinkGet() })); } if (!client.AccessTokenGet(code)) { return(View("Error", new FacebookViewData { errorMessage = "Unable to obtain permission", pageUrl = pagetype.ToReturnUrl(identifier) })); } // check subdomain is valid id = id.ToLower(); // also check special domain list if (GeneralConstants.SUBDOMAIN_RESTRICTED.Contains(id)) { return(View("Error", new FacebookViewData { errorMessage = "Store address is not available", pageUrl = pagetype.ToReturnUrl(identifier) })); } var mastersubdomain = repository.GetSubDomains().Where(x => x.name == id).SingleOrDefault(); if (mastersubdomain != null) { return(View("Error", new FacebookViewData { errorMessage = "Store address is not available", pageUrl = pagetype.ToReturnUrl(identifier) })); } var facebook = new FacebookService(client.token); var fb_usr = facebook.People.GetUser("me"); if (fb_usr == null) { return(View("Error", new FacebookViewData { errorMessage = "Unable to create account", pageUrl = pagetype.ToReturnUrl(identifier) })); } // verify that email has not been used to register another account if (repository.GetUserByEmail(fb_usr.email).Where(x => (x.role & (int)UserRole.CREATOR) != 0).SingleOrDefault() != null) { Syslog.Write(ErrorLevel.INFORMATION, "Facebook email address in use: " + fb_usr.email); return(View("Error", new FacebookViewData { errorMessage = "Email address is already registered", pageUrl = pagetype.ToReturnUrl(identifier) })); } var usr = new user { role = (int)UserRole.ADMIN, viewid = Crypto.Utility.GetRandomString(), permissions = (int)UserPermission.ADMIN, FBID = fb_usr.id, email = fb_usr.email ?? "", externalProfileUrl = fb_usr.link, firstName = fb_usr.first_name, lastName = fb_usr.last_name, gender = fb_usr.gender, externalProfilePhoto = string.Format("https://graph.facebook.com/{0}/picture?type=large", fb_usr.id) }; // create subdomain entry mastersubdomain = new MASTERsubdomain { flags = 0, name = id, total_outofstock = 0, total_contacts_public = 0, total_contacts_private = 0, total_contacts_staff = 0, total_invoices_sent = 0, total_invoices_received = 0, total_orders_sent = 0, total_orders_received = 0, total_products_mine = 0, accountType = AccountPlanType.ULTIMATE.ToString() }; repository.AddMasterSubdomain(mastersubdomain); // create organisation first var org = new organisation { subdomain = mastersubdomain.id, name = fb_usr.name }; repository.AddOrganisation(org); usr.organisation = org.id; // CREATE DEFAULT STRUCTURES // add default inventory location var loc = new inventoryLocation { name = GeneralConstants.INVENTORY_LOCATION_DEFAULT, subdomain = mastersubdomain.id, lastUpdate = DateTime.UtcNow }; repository.AddInventoryLocation(loc, mastersubdomain.id); // add default shipping profile var shippingProfile = new shippingProfile() { title = "Default", type = ShippingProfileType.FLATRATE.ToString(), subdomainid = mastersubdomain.id }; repository.AddShippingProfile(shippingProfile); // update subdomain entry mastersubdomain.creator = org.id; // create facebookpage to link to subdomain var newEntry = new facebookPage { subdomainid = mastersubdomain.id, pageid = identifier }; repository.AddFacebookPage(newEntry); try { // if user exist then we still need to verify email Random rnd = RandomNumberGenerator.Instance; usr.confirmationCode = rnd.Next(); repository.AddUser(usr); // generate photo new Thread(() => usr.externalProfilePhoto.ReadAndSaveFromUrl(mastersubdomain.id, usr.id, usr.id, PhotoType.PROFILE)).Start(); // add access token var oauthdb = new oauth_token { token_key = client.token, token_secret = "", type = OAuthTokenType.FACEBOOK.ToString(), subdomainid = mastersubdomain.id, appid = usr.id.ToString(), authorised = true }; repository.AddOAuthToken(oauthdb); // obtain any other account tokens var accounts = facebook.Account.GetAccountTokens("me"); if (accounts != null && accounts.data != null) { foreach (var account in accounts.data) { if (account.name != null) { var ftoken = new facebook_token { pageid = account.id, subdomainid = mastersubdomain.id, accesstoken = account.access_token, name = account.name }; repository.AddUpdateFacebookToken(ftoken); } } } repository.Save(); // send confirmation email var viewdata = new ViewDataDictionary() { { "host", id.ToSubdomainUrl() }, { "confirmCode", usr.confirmationCode }, { "email", usr.email } }; EmailHelper.SendEmailNow(EmailViewType.ACCOUNT_CONFIRMATION, viewdata, "New Account Details and Email Verification Link", usr.email, usr.ToFullName(), usr.id); } catch (Exception ex) { Syslog.Write(ex); return(View("Error", new FacebookViewData { errorMessage = "Unable to create account", pageUrl = pagetype.ToReturnUrl(identifier) })); } return(RedirectToAction("Redirect", new { url = pagetype.ToReturnUrl(identifier) })); }
public static IEnumerable <ShippingRule> ToShippingMethods(this List <CheckoutItem> checkoutItems, MASTERsubdomain sender, organisation receiver, shippingProfile[] shippingProfiles) { IEnumerable <ShippingRule> shippingMethods = Enumerable.Empty <ShippingRule>(); if (shippingProfiles.Count() != 0 && receiver.address1 != null && receiver.address1.country.HasValue) { // try get shipping rates) var shippingAddress = receiver.address1; if (shippingProfiles.UseShipwire()) { var aes = new AESCrypt(); var shipwireService = new ShipwireService(sender.shipwireEmail, aes.Decrypt(sender.shipwirePassword, sender.id.ToString())); var address = new AddressInfo(string.Format("{0} {1}", shippingAddress.first_name, shippingAddress.last_name), shippingAddress.street_address, shippingAddress.city, shippingAddress.state, Country.GetCountry(shippingAddress.country.Value).name, shippingAddress.postcode, "", ""); var shipwireOrder = new Order(address); foreach (var entry in checkoutItems) { var item = new Shipwire.order.OrderItem { Sku = entry.SKU, Quantity = entry.quantity }; shipwireOrder.AddItem(item); } shipwireService.CreateRateRequest(shipwireOrder); var rateResponse = shipwireService.SubmitRateRequest(); shippingMethods = rateResponse.ToModel(sender.organisation.MASTERsubdomain.currency.ToCurrency()); } else { shippingRule[] rules = null; var statename = shippingAddress.state; var countryid = shippingAddress.country.Value; if (!string.IsNullOrEmpty(statename)) { // try get state match rules = shippingProfiles.SelectMany(x => x.shippingRules).Where( x => x.state == statename && x.country == countryid).ToArray(); // if none try get state-other match if (rules.Count() == 0) { rules = shippingProfiles.SelectMany(x => x.shippingRules).Where( x => x.state == "" && x.country == countryid).ToArray(); } } if (rules == null || rules.Count() == 0) { rules = shippingProfiles.SelectMany(x => x.shippingRules).Where(x => x.country == countryid).ToArray(); if (rules.Count() == 0) { rules = shippingProfiles.SelectMany(x => x.shippingRules).Where(x => !x.country.HasValue).ToArray(); } } // what type of rule var rule = rules.FirstOrDefault(); if (rule != null) { var ruletype = (RuleType)rule.ruletype; switch (ruletype) { case RuleType.PRICE: decimal orderprice = 0; foreach (var item in checkoutItems) { var sellingprice = item.UnitPrice; orderprice += (sellingprice * item.quantity); } if (orderprice != 0) { var keys = rules.Where(x => x.matchvalue < orderprice).GroupBy(x => x.name).Select( y => y.Key); var matchedrules = new List <ShippingRule>(); foreach (var key in keys) { var result = rules.Where(x => x.matchvalue < orderprice && x.name == key). OrderByDescending(x => x.matchvalue).FirstOrDefault(); if (result != null) { matchedrules.Add(result.ToModel()); } } shippingMethods = matchedrules; } break; case RuleType.WEIGHT: decimal weight = 0; // only calculate weight if all items have weight dimensions var incompletecount = checkoutItems.Where(x => x.dimension == null || x.dimension.weight == 0).Count(); if (incompletecount == 0) { foreach (var item in checkoutItems) { Debug.Assert(item.dimension != null && item.quantity != 0); weight += (item.dimension.weight * item.quantity); } // only match if weight has been entered if (weight != 0) { var keys = rules.Where(x => x.matchvalue < weight).GroupBy(x => x.name).Select( y => y.Key); var matchedrules = new List <ShippingRule>(); foreach (var key in keys) { var result = rules.Where(x => x.matchvalue < weight && x.name == key).OrderByDescending( x => x.matchvalue).FirstOrDefault(); if (result != null) { matchedrules.Add(result.ToModel()); } } shippingMethods = matchedrules; } } break; default: throw new NotImplementedException(); } } } } return(shippingMethods); }
public static OrgColumn ToSyncModel(this organisation v, CFlag flag, long?offlineid = null) { return(new OrgColumn()); }