Esempio n. 1
0
        //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);
        }
Esempio n. 2
0
        //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);
        }
Esempio n. 3
0
        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)));
            }
        }