/// <summary> /// Update Nop's Customer datas from Mercator /// </summary> /// <param name="cli"></param> /// <param name="cl"></param> /// <param name="context"></param> private void updateNopClient(CLI cli, Customer cl, JToken GenericAttributeModiftag) { //Patch Customer JObject toPatch = new JObject(); if (cli.C_EMAIL.TrimEnd() != cl.Email) { CheckEmailExistence(cli); toPatch.Add("Username", cli.C_EMAIL.TrimEnd()); toPatch.Add("Email", cli.C_EMAIL.TrimEnd()); } WebService.Patch(urlBuilder.Id(cl.Id).BuildQuery(), toPatch.ToString()); //Tarif update //string crJson = WebService.Get(String.Format(WebServiceUrls.GET_CUSTOMER_AND_CR_BY_ID, cl.IdNop)); //JToken[] customer = ParserJSon.ParseResultToJTokenList(crJson); //var crs = customer.FirstOrDefault(); //var customerRoles = crs != null ? crs["CustomerRoles"].ToArray() : null; //syncTarCli(cli, context); //Update Tag toPatch = new JObject(); toPatch.Add("Value", cli.C_MODIFTAG.ToString()); WebService.Patch(String.Format(new UrlBuilder("GenericAttribute").Id((int)GenericAttributeModiftag["Id"]).BuildQuery()), toPatch.ToString()); if (cli.C_ADRESSE.TrimEnd() != cl.Address1.Street.TrimEnd() || cli.C_ADRESSE2.TrimEnd() != cl.Address1.Street2.TrimEnd()) { string addressJson = ParserJSon.ParseAddressToJson(cli, OptionsMercator).ToString(); string addressResult = WebService.Post(WebApiEntities.ADDRESS, addressJson); JObject newAddress = JObject.Parse(addressResult); int addressId = (int)newAddress["Id"]; //link address JObject linkCliToAddress = new JObject(); linkCliToAddress.Add("@odata.id", WebService.GetStoreAddress() + new UrlBuilder("Address").Id(addressId).BuildQuery()); WebService.Put(urlBuilder.BuildQueryRef(cli.C_ID_WEB, "Addresses"), linkCliToAddress); //link address as billing address //WebService.Put(String.Format(WebServiceUrls.LINK_CUSTOMER_TO_BILLING_ADDRESS, cli.C_ID_WEB.ToString()), linkCliToAddress); } }
/// <summary> /// Create a new Customer in NopCommerce from a Mercator CLI /// </summary> /// <param name="c"></param> /// <param name="context"></param> private void createNopClient(CLI c) { //Check if email/username already exists CheckEmailExistence(c); //checkUsernameExistence(c); //Generation random password, or use C_ID? //string password = PasswordManagement.CreatePassword(); string password = c.C_ID; //Add address string addressResult = WebService.Post(WebApiEntities.ADDRESS, ParserJSon.ParseAddressToJson(c, OptionsMercator).ToString()); JObject newAddress = JObject.Parse(addressResult); int addressId = (int)newAddress["Id"]; string clientJson = ParserJSon.ParseClientToJson(c.C_EMAIL.TrimEnd(), DateTimeOffset.Now, password, /*mercatorPrefix+*/ c.C_ID.TrimEnd(), c.C_MODIFTAG).ToString(); string clientResult = WebService.Post(ENTITY, clientJson); JObject newCli = JObject.Parse(clientResult); int id = (int)newCli["Id"]; c.C_ID_WEB = id; //Add TVA Number (if not_empty) //VatNumberStatudId : 10 = empty, 20 = valid if (!String.IsNullOrWhiteSpace(c.C_NUM_TVA)) { List <JObject> entries = ParserJSon.ParseClientCompanyToJson(id, c.C_NUM_TVA.TrimEnd(), c.C_NOM.TrimEnd()); foreach (JObject e in entries) { WebService.Post(WebApiEntities.GENERIC_ATTRIBUTE, e.ToString()); } } JObject linkCliToAddress = new JObject(); linkCliToAddress.Add("@odata.id", WebService.GetStoreAddress() + new UrlBuilder("Address").Id(addressId).BuildQuery()); //link address WebService.Put(urlBuilder.BuildQueryRef(c.C_ID_WEB, "Addresses"), linkCliToAddress.ToString()); //link address as billing address //WebService.Put(String.Format(WebServiceUrls.LINK_CUSTOMER_TO_BILLING_ADDRESS, c.C_ID_WEB.ToString()), linkCliToAddress.ToString()); //link role //3 = Registered (so that he can connect) JObject linkCliToCR = new JObject(); linkCliToCR.Add("@odata.id", WebService.GetStoreAddress() + new UrlBuilder("CustomerRole").Id(3).BuildQuery()); WebService.Put(urlBuilder.BuildQueryRef(c.C_ID_WEB, "CustomerRoles"), linkCliToCR.ToString()); JObject genericAttributeMercatorId = ParserJSon.GetGenericAttributeJSon(id, ENTITY, KEY_MERCATORID, c.C_ID); WebService.Post(WebApiEntities.GENERIC_ATTRIBUTE, genericAttributeMercatorId); JObject genericAttributeModiftagId = ParserJSon.GetGenericAttributeJSon(id, ENTITY, KEY_MODIFTAG, c.C_MODIFTAG.ToString()); WebService.Post(WebApiEntities.GENERIC_ATTRIBUTE, genericAttributeModiftagId); //From Mercator, tarif indiqué dans fiche article //string roleIdResult = WebService.Get(String.Format(WebServiceUrls.CUSTOMER_ROLE_BY_SYSTEM_NAME, WebServiceUrls.TARIF_ + c.C_TARIF)); //JToken[] roleId = ParserJSon.ParseResultToJTokenList(roleIdResult); //linkCliToCR = "{\"@odata.id\":\"" + ConfigurationManager.AppSettings["storeAddress"] + String.Format(WebServiceUrls.CUSTOMER_ROLE_ID, roleId.FirstOrDefault()["Id"].ToString()) + "\"}"; //WebService.Put(String.Format(WebServiceUrls.LINK_CUSTOMER_TO_CR_WS, c.C_ID_WEB.ToString()), linkCliToCR); SigCli sigCli = new SigCli(); sigCli.Read(c.C_ID); sigCli.SetValueForField("C_ID_WEB", c.C_ID_WEB); sigCli.Update(); //context.SaveChanges(); }