private async Task GetDevices(validicInfo validic, List <ValidicAppsModel> validicApps) { HttpClient clientHttp = new HttpClient(); clientHttp.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); clientHttp.BaseAddress = new Uri("https://api.validic.com"); var task = await clientHttp.GetAsync("/v1/organizations/" + idValidic + "/apps.json?authentication_token=" + validic.validicToken + "&access_token=" + tokenValidic); if (task.StatusCode == HttpStatusCode.Unauthorized) { throw new Exception("No autorizado"); } else { if (task.StatusCode == HttpStatusCode.OK) { task.EnsureSuccessStatusCode(); JObject o = task.Content.ReadAsAsync <JObject>().Result; JToken token = o.SelectToken("summary.status"); if (token.ToString() == "200") { token = o.SelectToken("apps"); for (int x = 0; x < token.Count(); x++) { ValidicAppsModel model = new ValidicAppsModel(); model.name = token[x]["name"].ToString(); model.syncUrl = token[x]["sync_url"].ToString(); model.unsyncUrl = token[x]["unsync_url"].ToString(); model.logoUrl = "https://app.validic.com" + token[x]["logo_url"].ToString(); model.synced = Convert.ToBoolean(token[x]["synced"].ToString()); model.subname = token[x]["subname"].ToString(); validicApps.Add(model); } } else { token = o.SelectToken("summary.message"); throw new Exception(token.ToString()); } } else { throw new Exception(task.ReasonPhrase); } } }
private async Task CreateValidicUser(String idUser, validicInfo validic) { HttpClient clientHttp = new HttpClient(); clientHttp.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); clientHttp.BaseAddress = new Uri("https://api.validic.com"); string userJSON = @"{" + "'user': {" + "'uid': '" + idUser + "'" + "}," + "'access_token': '" + tokenValidic + "'" + "}"; JObject userJson = JObject.Parse(userJSON); var task = await clientHttp.PostAsJsonAsync("/v1/organizations/" + idValidic + "/users.json", userJson); if (task.StatusCode == HttpStatusCode.Unauthorized) { throw new Exception("No autorizado"); } else { if (task.StatusCode == HttpStatusCode.Created) { task.EnsureSuccessStatusCode(); JObject o = task.Content.ReadAsAsync <JObject>().Result; JToken token = o.SelectToken("code"); if (token.ToString() == "201") { token = o.SelectToken("user._id"); validic.validicId = token.ToString(); token = o.SelectToken("user.access_token"); validic.validicToken = token.ToString(); } else { token = o.SelectToken("message"); throw new Exception(token.ToString()); } } else { throw new Exception(task.ReasonPhrase); } } }
public async Task <HttpResponseMessage> ConnectDevices(SearchModel varSearchModel) { Thread.CurrentThread.CurrentCulture = culture; String idUser = varSearchModel.parameters[0].Trim(); List <ValidicAppsModel> validicApps = new List <ValidicAppsModel>(); try { using (SqlConnection connection1 = new SqlConnection(connetionString)) { await connection1.OpenAsync(); validicInfo validic = new validicInfo(); validic.validicId = ""; validic.validicToken = ""; await GetIdValidicUser(connection1, idUser, validic); if (validic.validicId.Trim() == "") { await CreateValidicUser(idUser, validic); await addValidicUser(connection1, idUser, validic); } await GetDevices(validic, validicApps); Dictionary <string, bool> userDevices = await GetUserDeviceFirstTime(connection1, idUser); await LoopUserUpdateFirstTime(connection1, idUser, validic, validicApps, userDevices); } } catch (ApplicationException ex) { ErrorModel _errors = new ErrorModel(); _errors.message = ex.Message; return(Request.CreateResponse(System.Net.HttpStatusCode.InternalServerError, _errors)); } catch (Exception ex) { ErrorModel _errors = new ErrorModel(); _errors.message = ex.Message; return(Request.CreateResponse(System.Net.HttpStatusCode.InternalServerError, _errors)); } return(Request.CreateResponse(System.Net.HttpStatusCode.OK, validicApps)); }
private async Task addValidicUser(SqlConnection connection1, String idUser, validicInfo validic) { SqlCommand command1 = new SqlCommand("UPDATE users set validic = 1, validicid = @idValidicUser , validictoken = @tokenValidicUser where id = @idUser", connection1); SqlParameter parameter = new SqlParameter("@idUser", SqlDbType.VarChar); parameter.Value = idUser; command1.Parameters.Add(parameter); parameter = new SqlParameter("@idValidicUser", SqlDbType.VarChar); parameter.Value = validic.validicId; command1.Parameters.Add(parameter); parameter = new SqlParameter("@tokenValidicUser", SqlDbType.VarChar); parameter.Value = validic.validicToken; command1.Parameters.Add(parameter); await command1.ExecuteNonQueryAsync(); }
public async Task <HttpResponseMessage> ValidicProvision(SearchModel varSearchModel) { Thread.CurrentThread.CurrentCulture = culture; String idUser = varSearchModel.parameters[0].Trim(); validicInfo validicProvision = new validicInfo(); try { using (SqlConnection connection1 = new SqlConnection(connetionString)) { await connection1.OpenAsync(); validicProvision.idUser = idValidic; validicProvision.validicId = ""; validicProvision.validicToken = ""; await GetIdValidicUser(connection1, idUser, validicProvision); } } catch (ApplicationException ex) { ErrorModel _errors = new ErrorModel(); _errors.message = ex.Message; return(Request.CreateResponse(System.Net.HttpStatusCode.InternalServerError, _errors)); } catch (Exception ex) { ErrorModel _errors = new ErrorModel(); _errors.message = ex.Message; return(Request.CreateResponse(System.Net.HttpStatusCode.InternalServerError, _errors)); } return(Request.CreateResponse(System.Net.HttpStatusCode.OK, validicProvision)); }
private async Task userInsertFirstTime(SqlConnection connection1, String idUser, validicInfo validic, string name, bool sync, string subname) { string strcommand = "INSERT INTO ValidicUserUpdate (userid,validicuser,namemarket,firsttime,sync, subname, history) " + "values(@userid,@validicuser,@namemarket,0,@sync, @subname,0)"; SqlCommand command1 = new SqlCommand(strcommand, connection1); SqlParameter parameter = new SqlParameter("@userid", SqlDbType.VarChar); parameter.Value = idUser; command1.Parameters.Add(parameter); parameter = new SqlParameter("@ValidicUser", SqlDbType.VarChar); parameter.Value = validic.validicId; command1.Parameters.Add(parameter); parameter = new SqlParameter("@namemarket", SqlDbType.VarChar); parameter.Value = name; command1.Parameters.Add(parameter); parameter = new SqlParameter("@subname", SqlDbType.VarChar); parameter.Value = subname; command1.Parameters.Add(parameter); parameter = new SqlParameter("@sync", SqlDbType.Bit); parameter.Value = sync; command1.Parameters.Add(parameter); await command1.ExecuteNonQueryAsync(); }
private async Task LoopUserUpdateFirstTime(SqlConnection connection1, String idUser, validicInfo validic, List <ValidicAppsModel> validicApps, Dictionary <string, bool> userDevices) { foreach (ValidicAppsModel apps in validicApps) { if (userDevices.ContainsKey(apps.name)) { if (apps.synced && !userDevices[apps.name]) { await userUpdateFirstTimeSync(connection1, idUser, apps.name, true); } else if (!apps.synced && userDevices[apps.name]) { await userUpdateFirstTimeSync(connection1, idUser, apps.name, false); } } else if (apps.synced) { await userInsertFirstTime(connection1, idUser, validic, apps.name, apps.synced, apps.subname); } } }
private async Task GetIdValidicUser(SqlConnection connection1, String idUser, validicInfo validic) { SqlCommand command1 = new SqlCommand("SELECT validicid, validictoken FROM users where id = @idUser", connection1); SqlParameter parameter = new SqlParameter("@idUser", SqlDbType.VarChar); parameter.Value = idUser; command1.Parameters.Add(parameter); SqlDataReader reader = await command1.ExecuteReaderAsync(); while (await reader.ReadAsync()) { if (!reader.IsDBNull(0)) { validic.validicId = reader.GetString(0); validic.validicToken = reader.GetString(1); } } reader.Close(); }