internal static bool TryGetRecord(OrganizationServiceContext context, FormEntitySourceDefinition definition, out Entity record)
        {
            record = context.CreateQuery(definition.LogicalName).FirstOrDefault(o => o.GetAttributeValue <Guid>(definition.PrimaryKeyLogicalName) == definition.ID);

            return(record != null);
        }
        private void RenderCrmEntityFormView(string entityName, string primaryFieldName, Entity serviceRequestType, Guid trueRecordId, FormViewMode formMode)
        {
            var serviceRequestDataSource = CreateDataSource("SeriveRequestDataSource", entityName, primaryFieldName, trueRecordId);

            Entity entityForm = null;

            entityForm = (serviceRequestType.GetAttributeValue <EntityReference>("adx_entityformid") != null)
                                ? XrmContext.CreateQuery("adx_entityform").FirstOrDefault(e => e.GetAttributeValue <Guid>("adx_entityformid") ==
                                                                                          serviceRequestType.GetAttributeValue <EntityReference>("adx_entityformid").Id) :
                         XrmContext.CreateQuery("adx_entityform").FirstOrDefault(ef => ef.GetAttributeValue <string>("adx_name")
                                                                                 == "Web Service Request Details" && ef.GetAttributeValue <string>("adx_entityname") == entityName);

            if (entityForm != null)
            {
                var formRecordSourceDefinition = new FormEntitySourceDefinition(entityName, primaryFieldName, trueRecordId);

                var entityFormControl = new EntityForm(entityForm.ToEntityReference(), formRecordSourceDefinition)
                {
                    ID                     = "CustomEntityFormControl",
                    FormCssClass           = "crmEntityFormView",
                    PreviousButtonCssClass = "btn btn-default",
                    NextButtonCssClass     = "btn btn-primary",
                    SubmitButtonCssClass   = "btn btn-primary",
                    ClientIDMode           = ClientIDMode.Static                                                         /*,
                                                                                                                          * EntityFormReference	= entityForm.ToEntityReference(),
                                                                                                                          * EntitySourceDefinition = formRecordSourceDefinition*/
                };

                var languageCodeSetting = ServiceContext.GetSiteSettingValueByName(Portal.Website, "Language Code");
                if (!string.IsNullOrWhiteSpace(languageCodeSetting))
                {
                    int languageCode;
                    if (int.TryParse(languageCodeSetting, out languageCode))
                    {
                        entityFormControl.LanguageCode = languageCode;
                    }
                }

                CrmEntityFormViewPanel.Controls.Add(entityFormControl);
            }
            else
            {
                var mappingFieldCollection = new MappingFieldMetadataCollection()
                {
                    FormattedLocationFieldName = serviceRequestType.GetAttributeValue <string>("adx_locationfieldname"),
                    LatitudeFieldName          = serviceRequestType.GetAttributeValue <string>("adx_latitudefieldname"),
                    LongitudeFieldName         = serviceRequestType.GetAttributeValue <string>("adx_longitudefieldname")
                };

                var serviceRequestFormView = new CrmEntityFormView()
                {
                    FormName               = "Web Details",
                    Mode                   = formMode,
                    EntityName             = entityName,
                    CssClass               = "crmEntityFormView",
                    SubmitButtonCssClass   = "btn btn-primary",
                    AutoGenerateSteps      = false,
                    ClientIDMode           = ClientIDMode.Static,
                    MappingFieldCollection = mappingFieldCollection
                };

                var languageCodeSetting = ServiceContext.GetSiteSettingValueByName(Portal.Website, "Language Code");
                if (!string.IsNullOrWhiteSpace(languageCodeSetting))
                {
                    int languageCode;
                    if (int.TryParse(languageCodeSetting, out languageCode))
                    {
                        serviceRequestFormView.LanguageCode         = languageCode;
                        serviceRequestFormView.ContextName          = languageCode.ToString(CultureInfo.InvariantCulture);
                        serviceRequestDataSource.CrmDataContextName = languageCode.ToString(CultureInfo.InvariantCulture);
                    }
                }

                CrmEntityFormViewPanel.Controls.Add(serviceRequestFormView);

                serviceRequestFormView.DataSourceID = serviceRequestDataSource.ID;
            }
        }