/// <summary> /// Метод создает новую запись сущности "contact". /// </summary> /// <param name="contactModel">Объект модели контакта.</param> public void AddContactToCrm(ContactEntityModel contactModel) { // Получаем токен. var token = new CrmAuthenticationToken { AuthenticationType = 0, OrganizationName = "AdventureWorksCycle" }; var connectionString = System.Configuration.ConfigurationManager. ConnectionStrings["CrmConnection"].ConnectionString; // Получаем сервис организации CRM. var service = new CrmService { Url = connectionString, CrmAuthenticationTokenValue = token, Credentials = System.Net.CredentialCache.DefaultCredentials }; // Создаем новую запись. var newContact = new contact { firstname = contactModel.ContactFirstName, lastname = contactModel.ContactLastName, mobilephone = contactModel.MobilePhone, emailaddress1 = contactModel.Email, jobtitle = contactModel.JobTitle }; if (contactModel.BirthDay.HasValue) { newContact.birthdate = CrmDateTime.FromUser(contactModel.BirthDay.Value); } service.Create(newContact); }
public string Pay(Reestr r) { logger.Info("_______pay______"); logger.Info(r.txn_id); logger.Info(r.txn_date); logger.Info(r.opportunityID); logger.Info(r.sum); logger.Info("_______pay______"); String errormsg = ""; BusinessEntityCollection opportunity; BusinessEntityCollection existing_reestr; try { existing_reestr = searchnew_reestr(r.txn_id); foreach (Microsoft.Crm.Sdk.DynamicEntity reestr in existing_reestr.BusinessEntities) { errormsg = $"Реестра оплат с именем {r.txn_id} уже существует. new_reestrid: {((Microsoft.Crm.Sdk.Key)((reestr).Properties["new_reestrid"])).Value.ToString()}"; logger.Error(errormsg); return(errormsg); } } catch (Exception ex) { errormsg = $"Не удалось осуществить поиск Реестра оплат с txn_id={r.txn_id}. Ошибка: {ex.Message}"; logger.Error(errormsg); return(errormsg); } try { Opp opp = new Opp(); opportunity = opp.searchOpportunity(r.opportunityID.ToString()); } catch (Exception ex) { errormsg = $"Не удалось осуществить поиск договора № {r.opportunityID.ToString()}. Ошибка: {ex.Message}"; logger.Error(errormsg); return(errormsg); } CrmConnection crmc = new CrmConnection("Crm"); CrmService crmService = crmc.CreateCrmService(); DynamicEntity new_reestr = new DynamicEntity("new_reestr"); new_reestr.Name = "new_reestr"; foreach (Microsoft.Crm.Sdk.DynamicEntity opp in opportunity.BusinessEntities) { try { // new_reestr.Properties.Add(new CrmDateTimeProperty("new_data", CrmTypes.CreateCrmDateTimeFromUser(DateTime.ParseExact(txn_date, "yyyyMMddHHmmss", CultureInfo.InvariantCulture)))); new_reestr.Properties.Add(new CrmDateTimeProperty("new_data", CrmDateTime.FromUser(DateTime.ParseExact(r.txn_date, "yyyyMMddHHmmss", CultureInfo.InvariantCulture)))); } catch (Exception ex) { errormsg = $"Не удалось конвертировать входное значение txn_date=[{r.txn_date}] в дату. Ошибка: {ex.Message}"; logger.Error(errormsg); return(errormsg); } try { new_reestr.Properties.Add(new CrmMoneyProperty("new_summ", new CrmMoney(decimal.Parse(r.sum, CultureInfo.InvariantCulture)))); } catch (Exception ex) { errormsg = $"Не удалось конвертировать входное значение sum=[{r.sum}] в decimal. Ошибка: {ex.Message}"; logger.Error(errormsg); return(errormsg); } new_reestr.Properties.Add(new PicklistProperty("new_source", new Picklist(10)));//Интернет - эквайринг new_reestr.Properties.Add(new StringProperty("new_name", r.txn_id.ToString())); new_reestr.Properties.Add(new StringProperty("new_txn_id", r.txn_id.ToString())); new_reestr.Properties.Add(new LookupProperty("new_dogovor", new Lookup("opportunity", ((Microsoft.Crm.Sdk.Key)(((Microsoft.Crm.Sdk.DynamicEntity)opportunity.BusinessEntities[0]).Properties["opportunityid"])).Value))); if (opp.Properties.Contains("new_signdate")) { new_reestr.Properties.Add(new CrmDateTimeProperty("new_data_dogovor", (CrmDateTime)opp["new_signdate"])); } if (opp.Properties.Contains("customerid")) { Customer customer = (Customer)opp["customerid"]; new_reestr.Properties.Add(new LookupProperty("new_customerid", new Lookup(customer.type, customer.Value))); } if (opp.Properties.Contains("new_programsidcost")) { Lookup lu = (Lookup)opp["new_programsidcost"]; new_reestr.Properties.Add(new LookupProperty("new_programsid", new Lookup(lu.type, lu.Value))); } if (opp.Properties.Contains("new_studyplaceid")) { Lookup lu = (Lookup)opp["new_studyplaceid"]; new_reestr.Properties.Add(new LookupProperty("new_studyplaceid", new Lookup(lu.type, lu.Value))); } if (opp.Properties.Contains("new_placeofwriteid")) { Lookup lu = (Lookup)opp["new_placeofwriteid"]; new_reestr.Properties.Add(new LookupProperty("new_placeofwriteid", new Lookup(lu.type, lu.Value))); } if (opp.Properties.Contains("ownerid")) { Owner lu = (Owner)opp["ownerid"]; new_reestr.Properties.Add(new LookupProperty("new_ownerid", new Lookup(lu.type, lu.Value))); } DateTime new_month_income = DateTime.ParseExact(r.txn_date, "yyyyMMddHHmmss", CultureInfo.InvariantCulture); new_month_income = new_month_income.AddDays((new_month_income.Day * -1) + 1); new_month_income = new_month_income.AddHours((new_month_income.Hour * -1) + 12); new_reestr.Properties.Add(new CrmDateTimeProperty("new_month_income", CrmDateTime.FromUser(new_month_income))); } Guid new_reestrID = Guid.Empty; try { new_reestrID = crmService.Create(new_reestr); } catch (Exception ex) { errormsg = $"Не удалось Создать запись реестра оплат для договора № {r.opportunityID.ToString()}. Ошибка: {ex.Message}"; logger.Error(errormsg); return(errormsg); } return(new_reestrID.ToString()); }
public String CreateContact(Guid contact_ID, Contact contact) { Guid contactid = contact_ID; try { contact cont = new contact(); CrmConnection crmc = new CrmConnection("Crm"); CrmService crmService = crmc.CreateCrmService(); if (contact_ID == new Guid("{00000000-0000-0000-0000-000000000000}")) { contactid = crmService.Create(cont); } // Создаем экземпляр динамческого объекта и указываем его имя DynamicEntity myDEUpdate = new DynamicEntity(); myDEUpdate.Name = "contact"; // Создаем KeyProperty для хранения GUID’а обновляемой записи KeyProperty myContactGuid = new KeyProperty(); myContactGuid.Name = "contactid"; // Указываем GUID обновляемой записи Key myContactKey = new Key(); myContactKey.Value = contactid; myContactGuid.Value = myContactKey; myDEUpdate.Properties.Add(myContactGuid); if (contact.address1_city != null) { myDEUpdate.Properties.Add(new StringProperty("address1_city", contact.address1_city)); } if (contact.address1_country != null) { myDEUpdate.Properties.Add(new StringProperty("address1_country", contact.address1_country)); } if (contact.address1_line1 != null) { myDEUpdate.Properties.Add(new StringProperty("address1_line1", contact.address1_line1)); } if (contact.address1_name != null) { myDEUpdate.Properties.Add(new StringProperty("address1_name", contact.address1_name)); } if (contact.address1_postalcode != null) { myDEUpdate.Properties.Add(new StringProperty("address1_postalcode", contact.address1_postalcode)); } if (contact.emailaddress1 != null) { myDEUpdate.Properties.Add(new StringProperty("emailaddress1", contact.emailaddress1)); } if (contact.firstname != null) { myDEUpdate.Properties.Add(new StringProperty("firstname", contact.firstname)); } if (contact.lastname != null) { myDEUpdate.Properties.Add(new StringProperty("lastname", contact.lastname)); } if (contact.middlename != null) { myDEUpdate.Properties.Add(new StringProperty("middlename", contact.middlename)); } if (contact.mobilephone != null) { myDEUpdate.Properties.Add(new StringProperty("mobilephone", contact.mobilephone)); } if (contact.salutation != null) { myDEUpdate.Properties.Add(new StringProperty("salutation", contact.salutation)); } //Кем выдан if (contact.new_giveoutby != null) { myDEUpdate.Properties.Add(new StringProperty("new_giveoutby", contact.new_giveoutby)); } //Номер if (contact.new_nomer != null) { myDEUpdate.Properties.Add(new StringProperty("new_nomer", contact.new_nomer)); } //Серия if (contact.new_seria != null) { myDEUpdate.Properties.Add(new StringProperty("new_seria", contact.new_seria)); } //Пол if (contact.gendercode != 0) { myDEUpdate.Properties.Add(new PicklistProperty("gendercode", new Picklist(contact.gendercode))); } //Гражданство if (contact.new_nationality != 0) { myDEUpdate.Properties.Add(new PicklistProperty("new_nationality", new Picklist(contact.new_nationality))); } //Тип ФЛ if (contact.new_type != 0) { myDEUpdate.Properties.Add(new PicklistProperty("new_type", new Picklist(contact.new_type))); } //Семейное положение if (contact.familystatuscode != 0) { myDEUpdate.Properties.Add(new PicklistProperty("familystatuscode", new Picklist(contact.familystatuscode))); } //День рождения if (contact.birthdate != null) { myDEUpdate.Properties.Add(new CrmDateTimeProperty("birthdate", CrmDateTime.FromUser(DateTime.ParseExact(contact.birthdate, "yyyyMMddHHmmss", CultureInfo.InvariantCulture)))); } //Посетил открытый урок if (contact.new_openles != null) { myDEUpdate.Properties.Add(new CrmDateTimeProperty("new_openles", CrmDateTime.FromUser(DateTime.ParseExact(contact.new_openles, "yyyyMMddHHmmss", CultureInfo.InvariantCulture)))); } //Дата выдачи if (contact.new_dategiveout != null) { myDEUpdate.Properties.Add(new CrmDateTimeProperty("new_dategiveout", CrmDateTime.FromUser(DateTime.ParseExact(contact.new_dategiveout, "yyyyMMddHHmmss", CultureInfo.InvariantCulture)))); } crmService.Update(myDEUpdate); //поиск контакта для переназначения ответственного, если таковой меняется Owner ownerID = new Owner(); if (contact_ID != new Guid("{00000000-0000-0000-0000-000000000000}")) { try { string ln = ""; //фамилия BusinessEntityCollection fcontact = searchContact(contact_ID.ToString()); foreach (DynamicEntity cont1 in fcontact.BusinessEntities) { ln = cont1["lastname"].ToString(); if (cont1.Properties.Contains("ownerid")) { ownerID = (Owner)cont1["ownerid"]; } } logger.Info($"Нашли контакт {ln}. ownerid={ownerID.Value.ToString()}"); } catch (Exception ex) { logger.Error($"Ошибка: {ex.ToString()}"); } } if (contact.ownerid != new Guid("{00000000-0000-0000-0000-000000000000}")) { if (ownerID.Value != contact.ownerid) { TargetOwnedContact target = new TargetOwnedContact(); SecurityPrincipal assignee = new SecurityPrincipal(); assignee.Type = SecurityPrincipalType.User; assignee.PrincipalId = contact.ownerid; target.EntityId = contactid; AssignRequest assign = new AssignRequest(); assign.Assignee = assignee; assign.Target = target; AssignResponse res = (AssignResponse)crmService.Execute(assign); } } return(contactid.ToString()); } catch (SoapException ex) { logger.Error($"Ошибка: {ex.Detail.InnerText}"); return(ex.Detail.InnerText); } }