/// <summary> /// Creates an <see cref="T:System.Web.Http.Controllers.IHttpController" /> object. /// Creates <see cref="DataObjectController"/> using current <see cref="IDependencyScope"/> and <see cref="IHttpRoute"/>. /// </summary> /// <param name="request">The message request.</param> /// <param name="controllerDescriptor">The HTTP controller descriptor.</param> /// <param name="controllerType">The type of the controller.</param> /// <returns> /// An <see cref="T:System.Web.Http.Controllers.IHttpController" /> object for specified arguments. /// </returns> public IHttpController Create(HttpRequestMessage request, HttpControllerDescriptor controllerDescriptor, Type controllerType) { if (controllerDescriptor.ControllerName == "DataObject") { IDependencyResolver dependencyResolver = request.GetConfiguration().DependencyResolver; IDataService dataService = (IDataService)dependencyResolver.GetService(typeof(IDataService)); if (dataService == null) { throw new InvalidOperationException("IDataService is not registered in the dependency scope."); } ManagementToken token = request.GetODataServiceToken(); DataObjectController controller = new DataObjectController(dataService, token.Model, token.Events, token.Functions); BaseOfflineManager offlineManager = (BaseOfflineManager)dependencyResolver.GetService(typeof(BaseOfflineManager)); if (offlineManager != null) { controller.OfflineManager = offlineManager; } return(controller); } return(_fallbackActivator.Create(request, controllerDescriptor, controllerType)); }
public bool LoadLeadObjectFromCRM(int LoadObject, string columnName, string columnValue, HttpSessionStateBase SessionBase) { LeadRecordController LRC = new LeadRecordController(); LeadRecord theLead; var actionresult = LRC.GetLeadRecordByColumn(columnName, columnValue); if (actionresult != null && actionresult != actionresult as System.Web.Http.Results.NotFoundResult) { var response = actionresult as OkNegotiatedContentResult <LeadRecord>; theLead = response.Content; } else { SessionManager.StoreProgramParameter("CRMLeadFound", "No", SessionBase); return(false); } ScreenViewer.API.DataObjectController DOC = new DataObjectController(); //string DOname = DataObjectToLoad; var ObjectResult = DOC.GetDataObjectCRM(LoadObject, theLead); var LeadObject = ObjectResult as OkNegotiatedContentResult <DataObjects>; DataObjects DisplayObject = (DataObjects)LeadObject.Content; SessionManager.StoreDataObject(SessionBase, DisplayObject.DOName, DisplayObject); SessionManager.StoreProgramParameter("CRMLeadFound", "Yes", SessionBase); SessionManager.StoreProgramParameter("CRMLeadObjectId", LoadObject.ToString(), SessionBase); return(true); }
public bool LoadDataObjectFromWebAPI(int scriptObjectId, string webAPIbaseaddress, HttpSessionStateBase SessionBase) { HttpClient client = new HttpClient(); //client.BaseAddress = new Uri(webAPIbaseaddress); client.DefaultRequestHeaders.Add("Accept", "application/json"); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); HttpResponseMessage response = client.GetAsync(webAPIbaseaddress).Result; if (response.IsSuccessStatusCode) { var theresponse = response.Content.ReadAsStringAsync(); //string json = theresponse.Result.Replace("[", "").Replace("]", ""); string json = theresponse.Result; //Example Multi Collection //string json = "[{\"Id\":\"00Qj000000IyrXzEAJ\",\"Company\":\"ZINGERS BAR AND GRILL\",\"Title\":null,\"Street\":\"12700 Hill Country Blvd\",\"City\":\"AUSTIN\",\"State\":\"Texas\",\"Country\":\"United States\",\"PostalCode\":\"78738\",\"Phone\":\"(512) 524-2430\",\"MobilePhone\":null,\"Email\":\"[email protected]\",\"FirstName\":\"ALAN\",\"LastName\":\"MCARTHUR\",\"LeadSource\":\"List\",\"Status\":\"Open\",\"Lead_MID__c\":\"650000006747920\",\"Non_Sales_Disposition__c\":null,\"Products_Presented__c\":null,\"Card_Termination_Date__c\":\"2015-07-14\",\"Recent_or_Existing_Merchant_Acct__c\":null,\"Est_Annual_Process_Volume__c\":null,\"Average_Ticket__c\":null,\"Current_Processor__c\":null,\"Name_of_Existing_Equipment_softward__c\":null},{\"Id\":\"00Qj000000IyrXzEAJ\",\"Company\":\"ZINGERS BAR AND GRILL\",\"Title\":null,\"Street\":\"12700 Hill Country Blvd\",\"City\":\"AUSTIN\",\"State\":\"Texas\",\"Country\":\"United States\",\"PostalCode\":\"78738\",\"Phone\":\"(512) 524-2430\",\"MobilePhone\":null,\"Email\":\"[email protected]\",\"FirstName\":\"ALAN\",\"LastName\":\"MCARTHUR\",\"LeadSource\":\"List\",\"Status\":\"Open\",\"Lead_MID__c\":\"650000006747920\",\"Non_Sales_Disposition__c\":null,\"Products_Presented__c\":null,\"Card_Termination_Date__c\":\"2015-07-14\",\"Recent_or_Existing_Merchant_Acct__c\":null,\"Est_Annual_Process_Volume__c\":null,\"Average_Ticket__c\":null,\"Current_Processor__c\":null,\"Name_of_Existing_Equipment_softward__c\":null}]"; //Example Single Collection //string json = "[{\"Id\":\"00Qj000000IyrXzEAJ\",\"Company\":\"ZINGERS BAR AND GRILL\",\"Title\":null,\"Street\":\"12700 Hill Country Blvd\",\"City\":\"AUSTIN\",\"State\":\"Texas\",\"Country\":\"United States\",\"PostalCode\":\"78738\",\"Phone\":\"(512) 524-2430\",\"MobilePhone\":null,\"Email\":\"[email protected]\",\"FirstName\":\"ALAN\",\"LastName\":\"MCARTHUR\",\"LeadSource\":\"List\",\"Status\":\"Open\",\"Lead_MID__c\":\"650000006747920\",\"Non_Sales_Disposition__c\":null,\"Products_Presented__c\":null,\"Card_Termination_Date__c\":\"2015-07-14\",\"Recent_or_Existing_Merchant_Acct__c\":null,\"Est_Annual_Process_Volume__c\":null,\"Average_Ticket__c\":null,\"Current_Processor__c\":null,\"Name_of_Existing_Equipment_softward__c\":null}]"; //Example No Collection //string json = "{\"Id\":\"00Qj000000IyrXzEAJ\",\"Company\":\"ZINGERS BAR AND GRILL\",\"Title\":null,\"Street\":\"12700 Hill Country Blvd\",\"City\":\"AUSTIN\",\"State\":\"Texas\",\"Country\":\"United States\",\"PostalCode\":\"78738\",\"Phone\":\"(512) 524-2430\",\"MobilePhone\":null,\"Email\":\"[email protected]\",\"FirstName\":\"ALAN\",\"LastName\":\"MCARTHUR\",\"LeadSource\":\"List\",\"Status\":\"Open\",\"Lead_MID__c\":\"650000006747920\",\"Non_Sales_Disposition__c\":null,\"Products_Presented__c\":null,\"Card_Termination_Date__c\":\"2015-07-14\",\"Recent_or_Existing_Merchant_Acct__c\":null,\"Est_Annual_Process_Volume__c\":null,\"Average_Ticket__c\":null,\"Current_Processor__c\":null,\"Name_of_Existing_Equipment_softward__c\":null}"; //Example Collection for DropDown //string json = "[{\"Name\":\"Do Not Call\",\"Value\":\"Do_Not_Call\"},{\"Name\":\"Call Back\",\"Value\":\"Call_Back\"},{\"Name\":\"Fax Machine\",\"Value\":\"Fax_Machine\"},{\"Name\":\"Wrong Number\",\"Value\":\"Wrong_Number\"}]"; var converter = new ExpandoObjectConverter(); var obj = JsonConvert.DeserializeObject(json); //string json = "[{\"Dispo\":{\"Name\":\"Do Not Call\",\"Value\":\"Do_Not_Call\"}},{\"Dispo\":{\"Name\":\"Call Back\",\"Value\":\"Call_Back\"}},{\"Dispo\":{\"Name\":\"Fax Machine\",\"Value\":\"Fax_Machine\"}},{\"Dispo\":{\"Name\":\"Wrong Number\",\"Value\":\"Wrong_Number\"}}]"; //var obj = JsonConvert.DeserializeObject<List<Dictionary<string,Dictionary<string, string>>>>(json); ScreenViewer.API.DataObjectController DOC = new DataObjectController(); var ObjectResult = DOC.GetDataObjectDictionary(scriptObjectId, obj); var LeadObject = ObjectResult as OkNegotiatedContentResult <DataObjects>; DataObjects DisplayObject = (DataObjects)LeadObject.Content; SessionManager.StoreDataObject(SessionBase, DisplayObject.DOName, DisplayObject); SessionManager.StoreProgramParameter(string.Format("{0}Found", DisplayObject.DOName), "Yes", SessionBase); return(true); } return(false); }
/// <summary> /// Конструктор /// </summary> /// <param name="controller">Контроллер DataObjectController.</param> internal QueryParameters(DataObjectController controller) { _controller = controller; if (controller.QueryOptions == null) { return; } if (controller.QueryOptions.Skip != null) { Skip = controller.QueryOptions.Skip.Value; } if (controller.QueryOptions.Top != null) { Top = controller.QueryOptions.Top.Value; } }
public static void SetValue(string ObjectName, string thevalue, HttpSessionStateBase session) { string dataobname = System.Text.RegularExpressions.Regex.Split(ObjectName, "\\.")[0]; DataObjects ScriptDataObject = (DataObjects)SessionControl.SessionManager.GetDataObject(session, dataobname); if (ScriptDataObject == null) { DataObjectController dataObjectController = new DataObjectController(); object loadObject = null; var actionResult = dataObjectController.GetDataObject(dataobname, loadObject); if (actionResult != null) { var objectResponse = actionResult as System.Web.Http.Results.OkNegotiatedContentResult <DataObjects>; DataObjects DisplayObject = (DataObjects)objectResponse.Content; SessionControl.SessionManager.StoreDataObject(session, DisplayObject.DOName, DisplayObject); ScriptDataObject = DisplayObject; } } ScriptDataObject.DetailsArray = SetObjectDetail(ObjectName, thevalue, ScriptDataObject.DetailsArray); SessionControl.SessionManager.StoreDataObject(session, dataobname, ScriptDataObject); }
public bool LoadDataObjectFromWebAPI(string DataObjectToLoad, string webAPIbaseaddress, string webAPIcall, HttpSessionStateBase SessionBase) { HttpClient client = new HttpClient(); client.BaseAddress = new Uri(webAPIbaseaddress); client.DefaultRequestHeaders.Add("Accept", "application/json"); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); HttpResponseMessage response = client.GetAsync(webAPIcall).Result; if (response.IsSuccessStatusCode) { var theresponse = response.Content.ReadAsStringAsync(); string json = theresponse.Result.Replace("[", "").Replace("]", ""); var converter = new ExpandoObjectConverter(); var obj = JsonConvert.DeserializeObject(json); ScreenViewer.API.DataObjectController DOC = new DataObjectController(); string DOname = DataObjectToLoad; var ObjectResult = DOC.GetDataObjectDictionary(DOname, obj); var LeadObject = ObjectResult as OkNegotiatedContentResult <DataObjects>; DataObjects DisplayObject = (DataObjects)LeadObject.Content; SessionManager.StoreDataObject(SessionBase, Regex.Split(DOname, "\\.")[0], DisplayObject); SessionManager.StoreProgramParameter(string.Format("{0}Found", DataObjectToLoad), "Yes", SessionBase); return(false); } else { SessionManager.StoreProgramParameter(string.Format("{0}Found", DataObjectToLoad), "No", SessionBase); } return(true); }
public void AfterSavePostComplexObjectTest() { // TODO: переписать тест с корректным формированием параметра - передаваемой сущности - для Post. // Объекты для тестирования создания. Медведь медв = new Медведь { Вес = 48 }; Лес лес1 = new Лес { Название = "Бор" }; Лес лес2 = new Лес { Название = "Березовая роща" }; медв.ЛесОбитания = лес1; var берлога1 = new Берлога { Наименование = "Для хорошего настроения", ЛесРасположения = лес1 }; var берлога2 = new Берлога { Наименование = "Для плохого настроения", ЛесРасположения = лес2 }; медв.Берлога.Add(берлога1); медв.Берлога.Add(берлога2); // Объекты для тестирования создания с обновлением. Медведь медвежонок = new Медведь { Вес = 12 }; var берлога3 = new Берлога { Наименование = "Для хорошего настроения", ЛесРасположения = лес1 }; медвежонок.Берлога.Add(берлога3); ActODataService(args => { args.Token.Events.CallbackAfterCreate = AfterCreate; args.Token.Events.CallbackAfterUpdate = AfterUpdate; args.Token.Events.CallbackAfterDelete = AfterDelete; // ------------------ Только создания объектов ------------------ // Подготовка тестовых данных в формате OData. var controller = new DataObjectController(args.DataService, args.Token.Model, args.Token.Events, args.Token.Functions); EdmEntityObject edmObj = controller.GetEdmObject(args.Token.Model.GetEdmEntityType(typeof(Медведь)), медв, 1, null); var edmЛес1 = controller.GetEdmObject(args.Token.Model.GetEdmEntityType(typeof(Лес)), лес1, 1, null); var edmЛес2 = controller.GetEdmObject(args.Token.Model.GetEdmEntityType(typeof(Лес)), лес2, 1, null); edmObj.TrySetPropertyValue("ЛесОбитания", edmЛес1); var coll = controller.GetEdmCollection(медв.Берлога, typeof(Берлога), 1, null); edmObj.TrySetPropertyValue("Берлога", coll); EdmEntityObject edmБерлога1 = (EdmEntityObject)coll[0]; // controller.GetEdmObject(args.ODataService.Model.GetEdmEntityType(typeof(Берлога)), берлога1, 1, null); EdmEntityObject edmБерлога2 = (EdmEntityObject)coll[1]; // controller.GetEdmObject(args.ODataService.Model.GetEdmEntityType(typeof(Берлога)), берлога2, 1, null); edmБерлога1.TrySetPropertyValue("ЛесРасположения", edmЛес1); edmБерлога2.TrySetPropertyValue("ЛесРасположения", edmЛес2); // Формируем URL запроса к OData-сервису. string requestUrl = string.Format("http://localhost/odata/{0}", args.Token.Model.GetEdmEntitySet(typeof(Медведь)).Name); ParamObj = null; // Обращаемся к OData-сервису и обрабатываем ответ, в теле запроса передаем создаваемый объект в формате JSON. HttpResponseMessage response = args.HttpClient.PostAsJsonAsync(requestUrl, edmObj).Result; Assert.NotNull(ParamObj); // Убедимся, что запрос завершился успешно. Assert.Equal(HttpStatusCode.Created, response.StatusCode); // Получим строку с ответом. string receivedJsonObjs = response.Content.ReadAsStringAsync().Result.Beautify(); // В ответе приходит объект с созданной сущностью. // Преобразуем полученный объект в словарь. Dictionary <string, object> receivedObjs = new JavaScriptSerializer().Deserialize <Dictionary <string, object> >(receivedJsonObjs); // Проверяем созданный объект, вычитав с помощью DataService DataObject createdObj = new Медведь { __PrimaryKey = медв.__PrimaryKey }; args.DataService.LoadObject(createdObj); Assert.Equal(ObjectStatus.UnAltered, createdObj.GetStatus()); Assert.Equal(((Медведь)createdObj).Вес, receivedObjs["Вес"]); // Проверяем что созданы все зависимые объекты, вычитав с помощью DataService var ldef = ICSSoft.STORMNET.FunctionalLanguage.SQLWhere.SQLWhereLanguageDef.LanguageDef; var lcs = LoadingCustomizationStruct.GetSimpleStruct(typeof(Лес), "ЛесE"); lcs.LoadingTypes = new[] { typeof(Лес) }; var dobjs = args.DataService.LoadObjects(lcs); Assert.Equal(2, dobjs.Length); lcs = LoadingCustomizationStruct.GetSimpleStruct(typeof(Берлога), "БерлогаE"); lcs.LoadingTypes = new[] { typeof(Берлога) }; // lcs.LimitFunction = ldef.GetFunction(ldef.funcEQ, new VariableDef(ldef.GuidType, SQLWhereLanguageDef.StormMainObjectKey), keyValue); dobjs = args.DataService.LoadObjects(lcs); Assert.Equal(2, dobjs.Length); // ------------------ Создание объекта и обновление связанных ------------------ // Создаем нового медведя: в его мастере ЛесОбитания - лес1, но в нём изменим Название; в детейлы заберем от первого медведя детейл2, изменив Название в мастере детейла. // Подготовка тестовых данных в формате OData. edmObj = controller.GetEdmObject(args.Token.Model.GetEdmEntityType(typeof(Медведь)), медвежонок, 1, null); edmObj.TrySetPropertyValue("ЛесОбитания", edmЛес1); edmЛес1.TrySetPropertyValue("Название", лес1.Название + "(обновл)"); edmЛес2.TrySetPropertyValue("Название", лес2.Название + "(обновл)"); медв.Берлога.Remove(берлога2); медвежонок.Берлога.Add(берлога2); coll = controller.GetEdmCollection(медвежонок.Берлога, typeof(Берлога), 1, null); edmObj.TrySetPropertyValue("Берлога", coll); edmБерлога1 = (EdmEntityObject)coll[0]; edmБерлога2 = (EdmEntityObject)coll[1]; edmБерлога1.TrySetPropertyValue("ЛесРасположения", edmЛес2); edmБерлога2.TrySetPropertyValue("ЛесРасположения", edmЛес1); ParamObj = null; // Обращаемся к OData-сервису и обрабатываем ответ, в теле запроса передаем создаваемый объект в формате JSON. response = args.HttpClient.PostAsJsonAsync(requestUrl, edmObj).Result; Assert.NotNull(ParamObj); // Убедимся, что запрос завершился успешно. Assert.Equal(HttpStatusCode.Created, response.StatusCode); // Проверяем созданный объект, вычитав с помощью DataService createdObj = new Медведь { __PrimaryKey = медвежонок.__PrimaryKey }; args.DataService.LoadObject(createdObj); Assert.Equal(ObjectStatus.UnAltered, createdObj.GetStatus()); Assert.Equal(12, ((Медведь)createdObj).Вес); // Проверяем что созданы все зависимые объекты, вычитав с помощью DataService ldef = ICSSoft.STORMNET.FunctionalLanguage.SQLWhere.SQLWhereLanguageDef.LanguageDef; lcs = LoadingCustomizationStruct.GetSimpleStruct(typeof(Лес), "ЛесE"); lcs.LoadingTypes = new[] { typeof(Лес) }; lcs.LimitFunction = ldef.GetFunction( ldef.funcEQ, new ICSSoft.STORMNET.FunctionalLanguage.VariableDef(ldef.GuidType, ICSSoft.STORMNET.FunctionalLanguage.SQLWhere.SQLWhereLanguageDef.StormMainObjectKey), лес1.__PrimaryKey); dobjs = args.DataService.LoadObjects(lcs); Assert.Equal(1, dobjs.Length); Assert.True(((Лес)dobjs[0]).Название.EndsWith("(обновл)")); lcs.LimitFunction = ldef.GetFunction( ldef.funcEQ, new ICSSoft.STORMNET.FunctionalLanguage.VariableDef(ldef.GuidType, ICSSoft.STORMNET.FunctionalLanguage.SQLWhere.SQLWhereLanguageDef.StormMainObjectKey), лес2.__PrimaryKey); dobjs = args.DataService.LoadObjects(lcs); Assert.Equal(1, dobjs.Length); Assert.True(((Лес)dobjs[0]).Название.EndsWith("(обновл)")); lcs = LoadingCustomizationStruct.GetSimpleStruct(typeof(Берлога), "БерлогаE"); lcs.LoadingTypes = new[] { typeof(Берлога) }; lcs.LimitFunction = ldef.GetFunction( ldef.funcEQ, new ICSSoft.STORMNET.FunctionalLanguage.VariableDef(ldef.GuidType, "Медведь"), медв.__PrimaryKey); dobjs = args.DataService.LoadObjects(lcs); Assert.Equal(1, dobjs.Length); lcs.LimitFunction = ldef.GetFunction( ldef.funcEQ, new ICSSoft.STORMNET.FunctionalLanguage.VariableDef(ldef.GuidType, "Медведь"), медвежонок.__PrimaryKey); dobjs = args.DataService.LoadObjects(lcs); Assert.Equal(2, dobjs.Length); // Вернем детейл для того, чтобы тест работал со следующими СУБД. медвежонок.Берлога.Remove(берлога2); медв.Берлога.Add(берлога2); }); }
private void Setup() { datexIIClientController = new DATEXIIClientController(); dataObjectController = new DataObjectController(); datexIIUpdateService = DATEXIIUpdateService.GetInstance(); }