Пример #1
0
        /// <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);
        }
Пример #2
0
        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());
        }
Пример #3
0
        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);
            }
        }