public static List <Subscription> GetSubscriptions(SocialNetworkType socialNetworkType) { List <Subscription> subs = new List <Subscription>(); var query = Connection.CreateCommand(); query.CommandText = $"SELECT * FROM subs WHERE social_network = '{socialNetworkType}';"; try { var result = query.ExecuteReader(); while (result.Read()) { Subscription sub = new Subscription { TgUserId = result["tg_user_id"].ToString(), SocialNetworkString = result["social_network"].ToString(), ShowLinks = Boolean.Parse(result["show_links"].ToString()), SubscribedAt = DateTime.Parse(result["subscribed_at"].ToString()), LastPostId = result["last_post_id"].ToString(), LastPostAt = DateTime.Parse(result["last_post_at"].ToString()) }; subs.Add(sub); } } catch (SqliteException ex) { Console.WriteLine($"{ex.Message} (sqlite code: {ex.SqliteErrorCode})\n" + ex.StackTrace); } return(subs); }
public MainAnswerHelper(BotUserRequest _thisRequest, object _Bot, SocialNetworkType _type, BotUser _botUser, List <MallBotContext> _dbContextes, List <VKApiRequestModel> _Requests = null) { botUser = _botUser; dbContextes = _dbContextes; Requests = _Requests; Bot = _Bot; type = _type; thisRequest = _thisRequest; #region Кэшируем string CachedItemKey = "MallBotData"; var datafromCache = cacher.Get(CachedItemKey); if (datafromCache == null) { datasOfBot = cacher.Update(CachedItemKey, dbContextes); } else { datasOfBot = (List <CachedDataModel>)datafromCache; } #endregion texter = new BotTextHelper(botUser.Locale, type, datasOfBot[0].Texts); sender = new ApiRouter(type, Bot, botUser, Requests); dataGetter = new GetDataHelper(datasOfBot); if (botUser.NowIs != MallBotWhatIsHappeningNow.SettingCustomer) { char usersdbID = botUser.CustomerCompositeID[0]; var customerID = int.Parse(botUser.CustomerCompositeID.Remove(0, 1)); currentCustomer = dataGetter.GetStructuredCustomers(true).FirstOrDefault(x => x.DBaseID == usersdbID).Customers.FirstOrDefault(x => x.CustomerID == customerID); //дает возможность работы в тц не из тестового режима } }
public ApiRouter(SocialNetworkType _type, object _Bot, BaseBotUser _botUser, List <VKApiRequestModel> _Requests = null) { type = _type; Bot = _Bot; botUser = _botUser; Requests = _Requests; }
public async Task <ActionResult> AuthorizeResult(SocialNetworkType authorizeType) { var authenticateResult = await Request.GetOwinContext().Authentication.AuthenticateAsync("ExternalCookie"); if (authenticateResult != null) { IEnumerable <Claim> claims = authenticateResult.Identity.Claims; var currentClaim = claims.FirstOrDefault(x => x.Type == authorizeType.ToString()); if (currentClaim != null) { var client = SocialNetworkClientFactory.GetClient(authorizeType, currentClaim.Value); UserInfo userInfo = await client.GetUserInfo(); UserDisplayModel displayModel = new UserDisplayModel { SocialNetworkName = userInfo.SocialNetworkName, Name = userInfo.UserName, Email = userInfo.Email, AccessToken = currentClaim.Value }; return(View(displayModel)); } } return(View("Index")); }
public AnswerWithPhotoHelper(SocialNetworkType _type, FindedInformation _answer, ApiRouter _sender, BotUser _botUser, BotTextHelper _texter, CachedDataModel _dataOfBot) { answer = _answer; sender = _sender; botUser = _botUser; texter = _texter; type = _type; dataOfBot = _dataOfBot; }
protected virtual IActionResult SocialLogin(SocialLoginRequest socialLoginRequest) { if (socialLoginRequest == null) { return(BadRequest()); } var loginResponse = UserBusiness.SocialLogin(SocialNetworkType.Get(socialLoginRequest.SocialNetworkType), socialLoginRequest.Email, socialLoginRequest.Token, socialLoginRequest.RequestedToBeAdvisor); return(Ok(new { logged = !loginResponse.PendingConfirmation, jwt = GenerateToken(socialLoginRequest.Email.ToLower().Trim()), data = loginResponse })); }
public void InsertNewLogin(int userId, decimal?aucAmount, SocialNetworkType socialNetworkType) { InsertActionAsync(new DomainObjects.Account.Action() { CreationDate = Data.GetDateTimeNow(), UserId = userId, Type = ActionType.NewLogin.Value, AucAmount = aucAmount, Ip = LoggedIp, Message = socialNetworkType?.GetDescription() }); }
public async Task <IHttpActionResult> GetSocialNetworkType(int id) { SocialNetworkType socialNetworkType = await db.SocialNetworkTypes.FindAsync(id); if (socialNetworkType == null) { ModelState.AddModelError("Message", "Social Network type not found!"); return(BadRequest(ModelState)); } return(Ok(socialNetworkType)); }
private SocialUser GetSocialUser(SocialNetworkType socialNetworkType, string accessToken) { SocialUser socialUser = null; if (socialNetworkType == SocialNetworkType.Facebook) { socialUser = FacebookBusiness.GetSocialUser(accessToken); } else if (socialNetworkType == SocialNetworkType.Google) { socialUser = GoogleBusiness.GetSocialUser(accessToken); } return(socialUser); }
public async Task <IHttpActionResult> DeleteSocialNetworkType(int socialTypeId) { SocialNetworkType socialNetworkType = await db.SocialNetworkTypes.FindAsync(socialTypeId); if (socialNetworkType == null) { ModelState.AddModelError("Message", "Social Network type not found!"); return(BadRequest(ModelState)); } db.SocialNetworkTypes.Remove(socialNetworkType); await db.SaveChangesAsync(); return(Ok(socialNetworkType)); }
public async Task AddSocialNetworkAccountAsync(int organizationId, SocialNetworkType socialNetworkType, string url, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); ThrowIfDisposed(); if (organizationId <= 0) { throw new ArgumentException(nameof(organizationId)); } await _organizationRepository.AddSocialNetworkAccountAsync(new OrganizationSocialNetworkUrlEntity { OrganizationId = organizationId, Type = socialNetworkType, Url = url }, cancellationToken); }
private static ISocialNetworkClient FindClient(SocialNetworkType clientType, string token) { ISocialNetworkClient client; var types = Assembly.GetExecutingAssembly().GetTypes().Where(t => t.Namespace == NamespaceClients).ToList(); var type = types.FirstOrDefault(x => x.Name == $"{clientType.ToString()}{ClientTypePostfix}"); if (type != null) { client = (ISocialNetworkClient)Activator.CreateInstance(type, token); } else { throw new SocialNetworkException("Specific client was not found in namespace SocialNetworkClient.Clients"); } return(client); }
public LoginResponse SocialLogin(SocialNetworkType socialNetworkType, string email, string accessToken, bool requestedToBeAdvisor) { BaseEmailValidation(email); EmailValidation(email); SocialUser socialUser = GetSocialUser(socialNetworkType, accessToken); ValidateSocialUser(socialUser, email); var user = GetForLoginByEmail(email); if (user != null) { return(SocialLogin(user, socialNetworkType)); } else { return(SocialRegister(email, requestedToBeAdvisor, socialNetworkType)); } }
private LoginResponse SocialLogin(User user, SocialNetworkType socialNetworkType) { if (!user.ConfirmationDate.HasValue) { user.ConfirmationDate = Data.GetDateTimeNow(); Data.Update(user); } bool hasInvestment = GetUserHasInvestment(user); ActionBusiness.InsertNewLogin(user.Id, null, socialNetworkType); return(new LoginResponse() { Id = user.Id, Email = user.Email, PendingConfirmation = !user.ConfirmationDate.HasValue, IsAdvisor = IsValidAdvisor(user), AdvisorName = UserBusiness.GetAdvisorName(user), ProfileUrlGuid = UserBusiness.GetProfileUrlGuid(user), HasInvestment = hasInvestment }); }
public async Task <int> AnalyseBadRequest(BotUser botUser, SocialNetworkType type, object bot, List <BotText> botTexts, List <VKApiRequestModel> Requests = null) { var texter = new BotTextHelper(botUser.Locale, type, botTexts); var sender = new ApiRouter(type, bot, botUser, Requests); switch (botUser.NowIs) { case MallBotWhatIsHappeningNow.SettingCustomer: return(await sender.SendText(texter.GetMessage("%badrequest1%"))); case MallBotWhatIsHappeningNow.SearchingOrganization: return(await sender.SendText(texter.GetMessage("%badrequest2%"))); case MallBotWhatIsHappeningNow.SearchingWay: return(await sender.SendText(texter.GetMessage("%badrequest3%"))); case MallBotWhatIsHappeningNow.GettingAllOrganizations: return(await sender.SendText(texter.GetMessage("%badrequest4%"))); default: return(0); } }
public async Task <IHttpActionResult> PostSocialNetworkType([FromBody] SocialNetworkType socialNetworkType) { if (!ModelState.IsValid) { ModelState.AddModelError("Message", "The social network type details are not valid!"); return(BadRequest(ModelState)); } try { db.SocialNetworkTypes.Add(socialNetworkType); await db.SaveChangesAsync(); SocialNetworkType lastpc = await db.SocialNetworkTypes.OrderByDescending(pc => pc.socialTypeId).FirstAsync(); return(Ok <SocialNetworkType>(lastpc));; } catch (System.Exception) { ModelState.AddModelError("Message", "Error during saving your social network type!"); return(BadRequest(ModelState)); } }
public async Task <IHttpActionResult> PutSocialNetworkType(int socialTypeId, SocialNetworkType socialNetworkType) { if (!ModelState.IsValid) { ModelState.AddModelError("Message", "The social network type details are not valid!"); return(BadRequest(ModelState)); } if (socialTypeId != socialNetworkType.socialTypeId) { ModelState.AddModelError("Message", "The social network type id is not valid!"); return(BadRequest(ModelState)); } db.Entry(socialNetworkType).State = EntityState.Modified; try { await db.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!SocialNetworkTypeExists(socialTypeId)) { ModelState.AddModelError("Message", "Social Network type not found!"); return(BadRequest(ModelState)); } else { throw; } } SocialNetworkType recspps = await db.SocialNetworkTypes.Where(cor => cor.socialTypeId == socialTypeId).FirstAsync(); return(Ok <SocialNetworkType>(recspps)); }
private LoginResponse SocialRegister(string email, bool requestedToBeAdvisor, SocialNetworkType socialNetworkType) { var user = SetNewUser(email, null, null, true); Data.Insert(user); ActionBusiness.InsertNewLogin(user.Id, null, socialNetworkType); return(new LoginResponse() { Id = user.Id, Email = user.Email, HasInvestment = false, PendingConfirmation = false, IsAdvisor = false, RequestedToBeAdvisor = requestedToBeAdvisor }); }
public static List <Subscription> GetSubscriptions(SocialNetworkType socialNetworkType) { throw new NotImplementedException(); }
public static List <Subscription> GetSubscriptions(SocialNetworkType socialNetworkType) { return(SqliteConnections.GetSubscriptions(socialNetworkType)); }
public static ISocialNetworkClient GetClient(SocialNetworkType clientType, string token) { return(FindClient(clientType, token)); }
/// <summary> /// Выполение команд, предназначенных разработчикам /// </summary> /// <param name="thisQuery"></param> /// <param name="type"></param> /// <param name="Bot"></param> /// <param name="botUser"></param> /// <param name="trimmedLoweredQuery"></param> /// <param name="DataOfBot"></param> /// <param name="Requests"></param> /// <returns></returns> public async Task <int> doDevelopersCommands(/*logging*/ BotUserQuery thisQuery /*where*/, SocialNetworkType type, object Bot, /*data*/ string trimmedLoweredQuery, CachedDataModel DataOfBot, /*other*/ List <VKApiRequestModel> Requests = null) { var sendHelper = new ApiRouter(type, Bot, botUser, Requests); try { var cmndHelper = new CommandAnswerHelper(); bool ThisCommandIsNotExist = true; if (trimmedLoweredQuery.Contains("route")) { ThisCommandIsNotExist = false; int floornumder = 0; switch (cmndHelper.RouteAnalise(trimmedLoweredQuery, DataOfBot, out floornumder)) { case 1: var dh = new DrawHelper(new MallHelpers.Models.CachedDataModel(), null, null); //var result = dh.DrawAllWaysAndAllShops(DataOfBot, floornumder); //await sendHelper.BotSendPhoto(result.Bmp); break; case 2: await sendHelper.SendText("Этажа с таким номером нет в выбранном вами торговом центре. /place"); break; case 3: await sendHelper.SendText("Синтаксическая ошибка. Используйте /testfunc_route_=номер этажа="); break; } } if (ThisCommandIsNotExist) { await sendHelper.SendText("Такой команды нет. Доступные команды: \\r\\n\\r\\n/testfunc_route_1 - где 1 - любой номер этажа"); } } catch { await sendHelper.SendText("testfunc_функция_параметр !!!"); } return(1); }
/// <summary> /// Выполнить задачу /// </summary> /// <param name="activeTaskText">Текст активной задачи</param> /// <param name="socialNetworkType">Тип социальной сети</param> /// <returns>True - Задача не выполнена, иначе false</returns> protected bool ExecuteTask(string activeTaskText, SocialNetworkType socialNetworkType) { SwitchToLastTab(); bool isError = false; switch (activeTaskText) { case "Подписаться на": { if (_instagramManager.IsFoundPage()) { isError = true; break; } _instagramManager.Subscribe(); break; } case "Поставить лайк на пост": { if (_instagramManager.IsFoundPage()) { isError = true; break; } _instagramManager.PutLike(); break; } case "Подписаться на сообщество": { if (_vkManager.IsPrivateGroup() || _vkManager.IsBlockedCommunity()) { isError = true; break; } _vkManager.JoinToComunity(); break; } case "Поставить лайк и репост": { if (!_vkManager.IsPostFound()) { isError = true; break; } _vkManager.PutLike(); _vkManager.MakeRepost(); break; } default: { isError = true; if (socialNetworkType == SocialNetworkType.Instagram) { _logManager.SendToEmail(activeTaskText, "ExecuteTasksInInstagram()", GetUrlPage(), "Новая задача для сервиса V-Like"); break; } _logManager.SendToEmail(activeTaskText, "ExecuteTasksInVkontakte()", GetUrlPage(), "Новая задача для сервиса V-Like"); } break; } if (isError) { CloseCurrentTabAndSwitchToAnother(); SkipActiveTask(); RefreshPage(); } return(isError); }
/// <summary> /// Добавление пользователя в базу /// </summary> /// <param name="type"></param> /// <param name="Bot"></param> /// <param name="recepientID"></param> /// <param name="first_name"></param> /// <param name="last_name"></param> /// <returns></returns> public MallBotContext AddBotUser(SocialNetworkType type, object Bot, string recepientID, string first_name = "", string last_name = "") { try { var btusr = new BotUser(); byte sex = 0; string bdate = ""; string locale = "ru_RU"; VK vk = null; FacebookApiHelper facebook = null; if (type == SocialNetworkType.VK) { //Запрашиваем данные о юзере в vk vk = (VK)Bot; var obj = AsyncHelper.RunSync(() => vk.GetUsersInformation(ulong.Parse(recepientID))); if (obj.ToString()[0] == '¡') { Logging.Logger.Error("VK. GetUsersInformation", obj.ToString()); } else { var VKuser = (VKResponceUser)obj; sex = VKuser.response[0].sex; first_name = VKuser.response[0].first_name; last_name = VKuser.response[0].last_name; bdate = VKuser.response[0].bdate; } btusr.BotUserVKID = recepientID; } if (type == SocialNetworkType.Telegram) { btusr.BotUserTelegramID = recepientID; } if (type == SocialNetworkType.Facebook) { facebook = (FacebookApiHelper)Bot; object obj = AsyncHelper.RunSync(() => facebook.GetUsersInformation(recepientID.ToString())); if (obj.ToString()[0] == '¡') { Logging.Logger.Error("Facebook. GetUsersInformation", obj.ToString()); } else { var facebookUser = (FacebookUser)obj; if (facebookUser.gender == "male") { sex = 2; } else { sex = 1; } first_name = facebookUser.first_name; last_name = facebookUser.last_name; if (facebookUser.locale != "ru_RU") { locale = "en_EN"; } } btusr.BotUserFacebookID = recepientID; } btusr.LevelTutorial = 0; if (sex != 0) { btusr.Male = sex.ToString(); } if (!string.IsNullOrWhiteSpace(first_name) || !string.IsNullOrWhiteSpace(last_name)) { btusr.Name = first_name + " " + last_name; } if (!string.IsNullOrWhiteSpace(bdate)) { string[] data = bdate.Split('.'); if (data.Count() == 3) { btusr.DateOfBirth = new DateTime(int.Parse(data[2]), int.Parse(data[1]), int.Parse(data[0])); } else if (data.Count() == 2) { btusr.DateOfBirth = new DateTime(2096, int.Parse(data[1]), int.Parse(data[0])); } } btusr.Locale = locale; btusr.IsTestMode = 0; btusr.NowIs = MallBotWhatIsHappeningNow.SettingCustomer; btusr.CustomerCompositeID = "newuser"; btusr.LastActivityDate = DateTime.Now; BotUser.Add(btusr); SaveChanges(); return(this); } catch (Exception exc) { Logging.Logger.Error(exc); return(this); } }
/// <summary> /// Выполение команд, предназначенных для детальной работы с Тогрговыми Центрами /// </summary> /// <param name="thisQuery"></param> /// <param name="type"></param> /// <param name="Bot"></param> /// <param name="botUser"></param> /// <param name="trimmedLoweredQuery"></param> /// <param name="DataOfBot"></param> /// <param name="Requests"></param> /// <returns></returns> public async Task <Customer> doSetSettingsAboutMallsCommands(/*logging*/ BotUserQuery thisQuery /*where*/, SocialNetworkType type, object Bot, /*data*/ string trimmedLoweredQuery, MallBotContext dbMainContext, /*other*/ List <VKApiRequestModel> Requests = null) { var sendHelper = new ApiRouter(type, Bot, botUser, Requests); try { if (trimmedLoweredQuery.Contains("starttestmode")) { botUser.IsTestMode = 1; botUser.CustomerCompositeID = "empty"; botUser.ModifiedDate = DateTime.Now; dbMainContext.SaveChanges(); await sendHelper.SendText(textHelper.GetMessage("%starttestmode%")); return(null); } if (trimmedLoweredQuery.Contains("endtestmode")) { botUser.IsTestMode = 0; botUser.CustomerCompositeID = "empty"; botUser.ModifiedDate = DateTime.Now; dbMainContext.SaveChanges(); await sendHelper.SendText(textHelper.GetMessage("%endtestmode%")); return(null); } if (trimmedLoweredQuery.Contains("place")) { var cmndHelper = new CommandAnswerHelper(); Customer thisCustomer = null; switch (cmndHelper.PlaceAnalise(trimmedLoweredQuery, out thisCustomer)) { case 1: botUser.CustomerCompositeID = trimmedLoweredQuery.Split('_')[2].ToUpper(); botUser.ModifiedDate = DateTime.Now; dbMainContext.SaveChanges(); await sendHelper.SendText($"Ура! Вы выбрали «{thisCustomer.Name}»"); return(thisCustomer); case 2: await sendHelper.SendText("Торгового центра с таким ключом не существует!"); return(null); case 3: await sendHelper.SendText("Синтаксическая ошибка. Используйте /mallset_place_=id= \\r\\nгде =id= - составной ключ. Например, /mallset_place_A1"); return(null); case 4: await sendHelper.SendText("Ошибка приложения. Попробуйте выполнить команду еще раз"); return(null); } return(null); } await sendHelper.SendText("Такой команды нет. Доступные команды: \\r\\n\\r\\n/mallset_starttestmode \\r\\n/mallset_endtestmode"); return(null); } catch { await sendHelper.SendText("mallset_функция !!!"); return(null); // ошибка } }