//Async task for Saving user details public async Task <string> SaveUserinfo(PersonalizationRequsetDTO userdata, string userid) { string rspSaveinfo = string.Empty; try { string WebApiRootURL = SettingsHelper.WebApiUrl; if (!string.IsNullOrEmpty(WebApiRootURL)) { //Creates the enpoint uri to be called StringBuilder EndPointUri = new StringBuilder(WebApiRootURL); string api = string.Format(SettingsHelper.PersonalizationAPIUser, userid); Uri spotlightEndPointUri = new Uri(EndPointUri.Append(string.Format(api)).ToString()); Helper JsonHelperObj = new Helper(); //Gets the response returned by the Personalization API rspSaveinfo = await JsonHelperObj.APIPostCall(string.Format(spotlightEndPointUri.ToString()), userdata); } else { //Write the trace in db that no url exists LoggerHelper.WriteToLog("WebApiRootURL URL is null", CoreConstants.Priority.High, CoreConstants.Category.Error); return(null); } } catch (Exception exception) { // logging an error if in case some exception occurs LoggerHelper.WriteToLog(exception, "Error while fetching the most popular videos" + exception.ToString()); throw new DataAccessException("Data Access Exception:-Error while saving user info"); } return(rspSaveinfo); }
//Post call for userinformation save public async Task <string> APIPostCall(string endpointUri, PersonalizationRequsetDTO data) { UserProfileController userProfileObj = new UserProfileController(); var result = string.Empty; try { //create object of client request using (HttpClient client = new HttpClient()) { client.DefaultRequestHeaders.Add("Accept", "application/json;odata=verbose"); client.DefaultRequestHeaders.Add("ContentType", "application/json;odata=verbose"); client.DefaultRequestHeaders.Add("Authorization", "Bearer " + await userProfileObj.GetTokenForApplication()); HttpResponseMessage responseMessage = await client.PutAsJsonAsync(endpointUri, data); if ((HttpStatusCode.OK).ToString().Equals(responseMessage.ReasonPhrase)) { result = responseMessage.ReasonPhrase.ToString();; //"Data has been successfully saved"; } else { result = SettingsHelper.ErrorSavedataMsg; //"Error occurred while saving data"; } } } catch (Exception exception) { LoggerHelper.WriteToLog(exception, "Error While Connecting to an API." + exception.ToString()); throw new DataAccessException("Error While Connecting to an API"); } return(result); }
public async Task <ActionResult> UpdateUser(UserDTO userinfo) { try { //Api Controller object initialization PersonalizationRequsetDTO Personalization = new PersonalizationRequsetDTO(); userinfo.UserID = userid; //creates list user backend dto object List <UserBackendDTO> lstuserbackend = new List <UserBackendDTO>(userinfo.userbackends); List <UserBackendDTO> lstupdateduserbackend = new List <Models.UserBackendDTO>(); //Iterate user Backend json format result and add UserID foreach (UserBackendDTO Objuserbackend in lstuserbackend) { Objuserbackend.UserID = userid; lstupdateduserbackend.Add(Objuserbackend); } //creates list user Devices dto object List <UserDeviceDTO> lstuserdevices = new List <UserDeviceDTO>(userinfo.userdevices); List <UserDeviceDTO> lstupdateduserdevices = new List <Models.UserDeviceDTO>(); //Iterate user Backend json format result and add UserID foreach (UserDeviceDTO Objuserdevices in lstuserdevices) { Objuserdevices.UserID = userid; lstupdateduserdevices.Add(Objuserdevices); } //Get user info details userinfo.userbackends = lstupdateduserbackend; userinfo.userdevices = lstupdateduserdevices; Personalization.user = userinfo; Personalization.userbackends = null; Personalization.userdevices = null; //Api Controller object initialization APIController apiControllerObj = new APIController(); //Seralize the User details result into json //string ModelSerialize = JsonConvert.SerializeObject(userinfo); var updateResponse = await apiControllerObj.SaveUserinfo(Personalization, userid); if (updateResponse != "OK") { LoggerHelper.WriteToLog(" Error while creating client context in UpdateUser method"); return(View("Error")); } // Return Json Formate object and pass to UI return(Json(updateResponse, JsonRequestBehavior.AllowGet)); } catch (Exception exception) { LoggerHelper.WriteToLog(exception + " - Error while creating client context : " + exception.ToString(), CoreConstants.Priority.High, CoreConstants.Category.Error); return(View("Error")); } }
public HttpResponseMessage PostBackends(PersonalizationRequsetDTO personalizationrequset) { string callerMethodName = string.Empty; try { //Get Caller Method name from CallerInformation class callerMethodName = CallerInformation.TrackCallerMethodName(); InsightLogger.TrackEvent("PersonalizationAPIController :: post backends method, endpoint - api/personalizationapi/users/{userID}/backends"); //check request for userbackend deatils if (personalizationrequset.userbackends != null) { UserBackend userbackend = new UserBackend(); IEnumerable <UserBackendDTO> userbackendsdto = personalizationrequset.userbackends; IEnumerable <UserBackendEntity> userprovidedbackends = userbackend.UserBackendEntityGenerator(userbackendsdto); InsightLogger.TrackEvent("PersonalizationAPIController :: associate backends to user"); userbackend.AddBackends(userprovidedbackends.ToList()); return(Request.CreateResponse(HttpStatusCode.OK)); } else { InsightLogger.TrackEvent("PersonalizationAPIController :: backends not provided"); return(Request.CreateResponse(HttpStatusCode.BadRequest)); } } catch (DataAccessException dalexception) { InsightLogger.Exception(dalexception.Message, dalexception, callerMethodName); return(Request.CreateResponse(HttpStatusCode.NotFound, DataProvider.PersonalizationResponseError <UserBackendDTO>("400", dalexception.Message, dalexception.Message))); } catch (BusinessLogicException blexception) { InsightLogger.Exception(blexception.Message, blexception, callerMethodName); return(Request.CreateResponse(HttpStatusCode.NotFound, DataProvider.PersonalizationResponseError <UserBackendDTO>("400", blexception.Message, blexception.Message))); } catch (Exception exception) { InsightLogger.Exception(exception.Message, exception, callerMethodName); //LoggerHelper.WriteToLog(exception + " - exception in controller action while inserting single userbackend : " // + exception.ToString(), CoreConstants.Priority.High, CoreConstants.Category.Error); return(Request.CreateResponse(HttpStatusCode.NotFound, DataProvider.PersonalizationResponseError <UserBackendDTO>("400", exception.Message, exception.StackTrace))); } }
public HttpResponseMessage PostDevices(PersonalizationRequsetDTO personalizationrequset) { string callerMethodName = string.Empty; try { //Get Caller Method name from CallerInformation class callerMethodName = CallerInformation.TrackCallerMethodName(); InsightLogger.TrackEvent("PersonalizationAPIController :: post method endpoint - api/personalizationapi/users/{userID}/devices"); UserDevice userdevice = new UserDevice(); //if user devcies provided in requset if (personalizationrequset.userdevices != null) { IEnumerable <UserDeviceDTO> userdevicesdto = personalizationrequset.userdevices; IEnumerable <UserDeviceEntity> userprovideddevices = userdevice.UserDeviceEntityGenerator(userdevicesdto); InsightLogger.TrackEvent("PersonalizationAPIController :: Associate devices to user"); userdevice.AddDevices(userprovideddevices.ToList()); return(Request.CreateResponse(HttpStatusCode.OK)); } else { InsightLogger.TrackEvent("PersonalizationAPIController ::userdevices not provided to associate"); return(Request.CreateResponse(HttpStatusCode.BadRequest)); } } catch (DataAccessException dalexception) { InsightLogger.Exception(dalexception.Message, dalexception, callerMethodName); return(Request.CreateResponse(HttpStatusCode.NotFound, DataProvider.PersonalizationResponseError <UserDeviceDTO>("400", dalexception.Message, dalexception.Message))); } catch (BusinessLogicException blexception) { InsightLogger.Exception(blexception.Message, blexception, callerMethodName); return(Request.CreateResponse(HttpStatusCode.NotFound, DataProvider.PersonalizationResponseError <UserDeviceDTO>("400", blexception.Message, blexception.Message))); } catch (Exception exception) { InsightLogger.Exception(exception.Message, exception, callerMethodName); //LoggerHelper.WriteToLog(exception + " - exception in controller action while inserting userdevcie : " // + exception.ToString(), CoreConstants.Priority.High, CoreConstants.Category.Error); return(Request.CreateResponse(HttpStatusCode.NotFound, DataProvider.PersonalizationResponseError <UserDeviceDTO>("400", exception.Message, exception.StackTrace))); } }
public HttpResponseMessage PutUsers(PersonalizationRequsetDTO personalizationrequset) { string callerMethodName = string.Empty; try { //Get Caller Method name from CallerInformation class callerMethodName = CallerInformation.TrackCallerMethodName(); InsightLogger.TrackEvent("PersonalizationAPIController ::endpoint : api/personalizationapi/users/{userID}, action: start put user"); //BL object instances created Personalization personalization = new Personalization(); UserBackend userbackend = new UserBackend(); UserDevice userdevice = new UserDevice(); //if userID is available in requset then check user exist or not. if (personalizationrequset != null && !string.IsNullOrEmpty(personalizationrequset.user.UserID)) { Boolean isUserExists = personalization.CheckUser(personalizationrequset.user.UserID); Boolean isDevicesProvided, isBackendsProvided; //retrackting individual objects from request IEnumerable <UserDeviceDTO> userdevicesdto = personalizationrequset.user.userdevices; IEnumerable <UserBackendDTO> userbackendsdto = personalizationrequset.user.userbackends; UserDTO user = personalizationrequset.user; UserEntity userentity = personalization.UserEntityGenerator(user); IEnumerable <UserDeviceEntity> userprovideddevices = null; IEnumerable <UserBackendEntity> userprovidedbackends = null; //to check if requset has userdevices or not if (userdevicesdto != null) { isDevicesProvided = true; userprovideddevices = userdevice.UserDeviceEntityGenerator(userdevicesdto); } else { isDevicesProvided = false; } //to check if requset has userbackends or not if (userbackendsdto != null) { isBackendsProvided = true; userprovidedbackends = userbackend.UserBackendEntityGenerator(userbackendsdto); } else { isBackendsProvided = false; } UserDTO updateduser; //create if user not exists else update if (!isUserExists) { InsightLogger.TrackEvent("PersonalizationAPIController :: endpoint : api/personalizationapi/users/{userID}, action: check user, response: false,userID: " + personalizationrequset.user.UserID); personalization.CreateUser(userentity); InsightLogger.TrackEvent("PersonalizationAPIController :: endpoint : api/personalizationapi/users/{userID}, action: create new user, response: success,userID: " + personalizationrequset.user.UserID); //add user devices if provided in request if (isDevicesProvided) { InsightLogger.TrackEvent("PersonalizationAPIController :: endpoint : api/personalizationapi/users/{userID}, action: devices provided, response: true"); userdevice.AddDevices(userprovideddevices.ToList()); InsightLogger.TrackEvent("PersonalizationAPIController :: endpoint : api/personalizationapi/users/{userID}, action: create and/or associate devices to user, response: success"); } //associate user backends if provided in request other wise associate all backends in system if (isBackendsProvided) { InsightLogger.TrackEvent("PersonalizationAPIController :: endpoint : api/personalizationapi/users/{userID}, action: backends provided, response: true"); userbackend.AddBackends(userprovidedbackends.ToList()); InsightLogger.TrackEvent("PersonalizationAPIController :: endpoint : api/personalizationapi/users/{userID}, action: create and/or associate backends to user, response: success"); } else { InsightLogger.TrackEvent("PersonalizationAPIController :: endpoint : api/personalizationapi/users/{userID}, action: backends provided, response: false"); userbackend.AddAllBackends(user.UserID); InsightLogger.TrackEvent("PersonalizationAPIController :: endpoint : api/personalizationapi/users/{userID}, action: create and/or associate all backends to user, response: success"); } updateduser = personalization.GetUser(personalizationrequset.user.UserID); personalization.TriggerUserRequests(personalizationrequset.user.UserID, updateduser.userbackends); InsightLogger.TrackEvent("PersonalizationAPIController :: endpoint : api/personalizationapi/users/{userID}, action: trigger a user requests update, response: success"); int SynchTime = personalization.CalcSynchTime(userprovidedbackends); InsightLogger.TrackEvent("PersonalizationAPIController :: endpoint : api/personalizationapi/users/{userID}, action: calculate synch waiting time, response: success, synchWaitingtime:" + SynchTime); } else { InsightLogger.TrackEvent("PersonalizationAPIController :: endpoint : api/personalizationapi/users/{userID}, action: check user, response: true"); personalization.UpdateUserProp(userentity); //remove existing devices to user and add the provided userdevices in requset if (isDevicesProvided) { InsightLogger.TrackEvent("PersonalizationAPIController :: endpoint : api/personalizationapi/users/{userID}, action: devices provided, response: true"); userdevice.RemoveDevices(personalizationrequset.user.UserID); InsightLogger.TrackEvent("PersonalizationAPIController :: endpoint : api/personalizationapi/users/{userID}, action: remove all existing associated devices , response: success"); userdevice.AddDevices(userprovideddevices.ToList()); InsightLogger.TrackEvent("PersonalizationAPIController :: endpoint : api/personalizationapi/users/{userID}, action: create associated devices to user, response: success"); } //remove existing backends to user and add the provided userbackends in requset if (isBackendsProvided) { InsightLogger.TrackEvent("PersonalizationAPIController :: endpoint : api/personalizationapi/users/{userID}, action: backends provided, response: true"); userbackend.RemoveBackends(personalizationrequset.user.UserID); InsightLogger.TrackEvent("PersonalizationAPIController :: endpoint : api/personalizationapi/users/{userID}, action: remove all existing associated backends , response: success"); userbackend.AddBackends(userprovidedbackends.ToList()); InsightLogger.TrackEvent("PersonalizationAPIController :: endpoint : api/personalizationapi/users/{userID}, action: create associated backends to user, response: success"); } else { userbackend.RemoveBackends(personalizationrequset.user.UserID); } updateduser = personalization.GetUser(personalizationrequset.user.UserID); } var ResponseUser = new PersonalizationResponseDTO <UserDTO>(); ResponseUser.result = updateduser; ResponseUser.query = personalizationrequset; InsightLogger.TrackEvent("PersonalizationAPIController :: endpoint : api/personalizationapi/users/{userID}, action: populate user object to response, response: success, userid: " + personalizationrequset.user.UserID); return(Request.CreateResponse(HttpStatusCode.OK, ResponseUser)); } else { InsightLogger.TrackEvent("PersonalizationAPIController ::endpoint : api/personalizationapi/users/{userID} , action : put user, response : userid is null"); return(Request.CreateResponse(HttpStatusCode.BadRequest, DataProvider.PersonalizationResponseError <UserBackendDTO>("400", "Error in updating user", ""))); } } catch (DataAccessException dalexception) { InsightLogger.Exception(dalexception.Message, dalexception, callerMethodName); return(Request.CreateResponse(HttpStatusCode.NotFound, DataProvider.PersonalizationResponseError <UserDTO>("400", dalexception.Message, dalexception.Message))); } catch (BusinessLogicException blexception) { InsightLogger.Exception(blexception.Message, blexception, callerMethodName); return(Request.CreateResponse(HttpStatusCode.NotFound, DataProvider.PersonalizationResponseError <UserDTO>("400", blexception.Message, blexception.Message))); } catch (Exception exception) { InsightLogger.Exception(exception.Message, exception, callerMethodName); //LoggerHelper.WriteToLog(exception + " - exception in controller action while inserting/updating user : "******"400", exception.Message, exception.StackTrace))); } }