public bool AddNewVisitor(string ip, long entityId, RatingPageType ratingPageType) { if (!_ratingQueriesByTypes.ContainsKey(ratingPageType) || string.IsNullOrWhiteSpace(ip) || IdValidator.IsInvalid(entityId)) { return(false); } var pageType = (int)ratingPageType; bool result = false; Adapter.ActionByContext(c => { RatingByIp rating = c.RatingByIp.FirstOrDefault(e => e.Ip == ip && e.EntityId == entityId && e.PageType == pageType); if (rating != null) { return; } rating = new RatingByIp { Ip = ip, EntityId = entityId, PageType = pageType }; c.RatingByIp.Add(rating); c.SaveChanges(); if (IdValidator.IsInvalid(rating.Id)) { return; } result = _ratingQueriesByTypes[ratingPageType].IncRating(entityId); }); return(result); }
public bool SetNewCookie(HttpContextBase httpContext, string newCookieValue) { if (!_userUniqueId.IsValid(newCookieValue)) { return(false); } string ip = RemoteClientHelper.GetClientIpAddress(httpContext.Request); long userId = _usersQuery.GetByHash(newCookieValue, ip); if (IdValidator.IsInvalid(userId)) { return(false); } HttpCookie cookie = httpContext.Response.Cookies[COOKIE_NAME]; if (cookie == null) { return(false); } cookie.Value = newCookieValue; httpContext.Response.Cookies[COOKIE_NAME].Value = newCookieValue; return(true); }
private SourceWithTranslation Create(GroupForUser groupForUser, SourceWithTranslation sentenceWithTranslation, int?rating) { SourceWithTranslation result = null; Adapter.ActionByContext(context => { var groupSentence = new GroupSentence { SentenceTranslationId = sentenceWithTranslation.Id, GroupId = groupForUser.Id, Rating = rating }; context.GroupSentence.Add(groupSentence); context.SaveChanges(); if (IdValidator.IsValid(groupSentence.Id)) { result = new SourceWithTranslation(); result.Set(groupSentence.Id, sentenceWithTranslation.Source, sentenceWithTranslation.Translation); } else { LoggerWrapper.LogTo(LoggerName.Errors).ErrorFormat( "GroupSentencesQuery.Create can't add sentence with translation for sentence with id {0}, translation with id {1}, rating {2}", sentenceWithTranslation.Source.Id, sentenceWithTranslation.Translation.Id, rating); } }); return(result); }
public bool CreateOrUpdate(long sentenceId, long wordId, string originalText, int orderInSentence, GrammarWordType grammarWordType) { var parsedGrammarWordType = (int)grammarWordType; bool result = false; Adapter.ActionByContext(context => { SentenceWord sentenceWord = context.SentenceWord.FirstOrDefault( e => e.SentenceId == sentenceId && e.OrderInSentence == orderInSentence); if (sentenceWord == null) { sentenceWord = new SentenceWord { SentenceId = sentenceId, OrderInSentence = orderInSentence }; context.SentenceWord.Add(sentenceWord); } sentenceWord.WordId = wordId; sentenceWord.OriginalText = originalText; sentenceWord.GrammarType = parsedGrammarWordType; context.SaveChanges(); result = IdValidator.IsValid(sentenceWord.Id); }); return(result); }
public void Should_Not_Validate_Empty_Id() { var result = new IdValidator().Validate(Guid.Empty); result.Success.Should().BeFalse(); result.Messages.FirstOrDefault().Equals(ProductValidationMessages.ID); }
public void Should_Validate_Id() { var result = new IdValidator().Validate(Guid.NewGuid()); result.Success.Should().BeTrue(); result.Messages.Any().Should().BeFalse(); }
private static bool GetValidationFailures(ResourceElement defaultObservation) { var validator = new IdValidator <ResourceElement>(); var validationContext = new ValidationContext <ResourceElement>(defaultObservation); return(validator.IsValid(validationContext, defaultObservation.Id)); }
public JsonResult SetMark(long userId, UserLanguages userLanguages, KnowledgeMark mark, TrainerItem item, RepetitionType repetitionType = RepetitionType.All) { var itemDataType = (KnowledgeDataType)(item != null ? item.DataType : int.MinValue); if (IsInvalid(userId, userLanguages) || EnumValidator.IsInvalid(mark) || item == null || IdValidator.IsInvalid(item.DataId) || EnumValidator.IsInvalid(itemDataType) || EnumValidator.IsInvalid(repetitionType)) { //TODO: писать сообщение return(JsonResultHelper.Error()); } IUserRepetitionIntervalQuery userRepetitionIntervalQuery = CreateUserRepetitionIntervalQuery(userId, repetitionType); var repetitionInterval = new UserRepetitionIntervalItem { DataId = item.DataId, DataType = itemDataType, SourceType = KnowledgeSourceType }; var trainerHelper = new TrainerHelper(userRepetitionIntervalQuery, userLanguages); return(trainerHelper.SetMark(Request, mark, repetitionInterval)); }
protected ActionResult GetIndex(long userId, UserLanguages userLanguages, long groupId, Action <TrainerModel> modelSetter) { if (WebSettingsConfig.Instance.IsSectionForbidden(SectionId)) { return(RedirectToAction("Index", RouteConfig.MAIN_CONTROLLER_NAME)); } if (IdValidator.IsInvalid(userId) || UserLanguages.IsInvalid(userLanguages) || IdValidator.IsInvalid(groupId)) { return(RedirectToParentPage()); } IUserRepetitionIntervalQuery userRepetitionIntervalQuery = CreateUserRepetitionIntervalQuery(userId, groupId); var trainerHelper = new TrainerHelper(userRepetitionIntervalQuery, userLanguages); TrainerModel model = trainerHelper.GetTrainerModel(Request); modelSetter(model); if (EnumerableValidator.IsNullOrEmpty(model.Items)) { return(RedirectToParentPage()); } ViewData[OurHtmlHelper.ViewDataFlags.SKIP_POPUP_PANEL] = true; return(View("../Trainer/Index", model)); }
public SourceWithTranslation GetOrCreate(SentenceType type, PronunciationForUser source, PronunciationForUser translation, byte[] image, int?rating = null) { //TODO: проверять корректность параметров SourceWithTranslation result = null; Adapter.ActionByContext(context => { SentenceTranslation sentenceTranslation = GetSentenceTranslation(context, source, translation); if (sentenceTranslation != null) { //обновить возможно изменившиеся поля SetSentenceTranslation(sentenceTranslation, type, image, rating); context.SaveChanges(); if (IdValidator.IsValid(sentenceTranslation.Id)) { result = new SourceWithTranslation(); result.Set(sentenceTranslation.Id, source, translation); } } else { result = CreateSentencencesWithTranslation(type, source, translation, image, rating); } }); return(result); }
public long GetUserId(HttpContextBase httpContext) { string userUniqueId = GetUserUniqueIdFromCookie(httpContext); bool needCreateNewUser = string.IsNullOrEmpty(userUniqueId) && _needCreate; if (needCreateNewUser) { userUniqueId = GenerateNewUserUnique(httpContext); } if (string.IsNullOrEmpty(userUniqueId)) { return(IdValidator.INVALID_ID); } string ip = RemoteClientHelper.GetClientIpAddress(httpContext.Request); long userId = needCreateNewUser ? _usersQuery.CreateByHash(userUniqueId, ip) : _usersQuery.GetByHash(userUniqueId, ip); if (IdValidator.IsInvalid(userId) && !needCreateNewUser) { //нужно было получить по идентификатору, но не получили - создать аккаунт userId = _usersQuery.CreateByHash(userUniqueId, ip); } return(userId); }
private SourceWithTranslation CreateSentencencesWithTranslation(SentenceType type, PronunciationForUser source, PronunciationForUser translation, byte[] image = null, int?rating = null) { SourceWithTranslation result = null; Adapter.ActionByContext(context => { Sentence sourceSentence = GetOrAddSentenceToContext(source.LanguageId, source.Text, context); Sentence translationSentence = GetOrAddSentenceToContext(translation.LanguageId, translation.Text, context); context.SaveChanges(); if (IdValidator.IsInvalid(sourceSentence.Id) || IdValidator.IsInvalid(translationSentence.Id)) { return; } var sentenceTranslation = new SentenceTranslation { SentenceId1 = sourceSentence.Id, SentenceId2 = translationSentence.Id }; SetSentenceTranslation(sentenceTranslation, type, image, rating); context.SentenceTranslation.Add(sentenceTranslation); context.SaveChanges(); if (IdValidator.IsInvalid(sentenceTranslation.Id)) { return; } result = ConverterEntities.ConvertToSourceWithTranslation(sentenceTranslation.Id, sentenceTranslation.Image, source.LanguageId, sourceSentence, translationSentence); }); return(result); }
protected override List <SourceWithTranslation> GetNextById(long userId, long id, long sourceLanguageId, long translationLanguageId, int count) { List <SourceWithTranslation> result = Adapter.ReadByContext(c => { long shuffleId = GetShuffleIdById(userId, id, c); if (IdValidator.IsInvalid(shuffleId)) { return(new List <SourceWithTranslation>(0)); } var joinedSequence = (from s1 in c.Sentence join st in c.SentenceTranslation on s1.Id equals st.SentenceId1 join s2 in c.Sentence on st.SentenceId2 equals s2.Id join ss in c.ShuffleSentence on st.Id equals ss.SentenceTranslationId where (ss.UserId == userId && ss.Id > shuffleId && ((s1.LanguageId == sourceLanguageId && s2.LanguageId == translationLanguageId) || (s1.LanguageId == translationLanguageId && s2.LanguageId == sourceLanguageId))) orderby ss.Id ascending select new { st.Id, st.Image, ss, s1, s2 }).Take(count); return (joinedSequence.AsEnumerable().OrderBy(e => e.ss.Id).Select( e => ConverterEntities.ConvertToSourceWithTranslation(e.Id, e.Image, sourceLanguageId, e.s1, e.s2)). ToList()); }); return(result); }
public FileResult Speak(UserLanguages userLanguages, long id, SpeakerDataType type, bool mp3Support) { byte[] audioBytes = null; if (UserLanguages.IsValid(userLanguages) && IdValidator.IsValid(id)) { audioBytes = GetPronunciation(id, type); } if (audioBytes == null) { audioBytes = new byte[0]; LoggerWrapper.LogTo(LoggerName.Errors).ErrorFormat( "SpeakerController.Speak. Для типа {0} с идентификатором {1} НЕ найдено произношение!", type, id); } /*if (!mp3Support) { * var audioConverter = new AudioConverter(); * byte[] result = audioConverter.ConvertMp3ToWav(audioBytes); * if (result != null) { * return File(result, "audio/wav"); * } * }*/ return(File(audioBytes, "audio/mp3")); }
public ActionResult DetailIndex(long userId, long authorId, string key) { //TODO: проверить валидность ключа на md5, проверить что у пользователя есть репозиторий if (IdValidator.IsInvalid(authorId) || string.IsNullOrEmpty(key) || WebSettingsConfig.Instance.IsSectionForbidden(SectionId.UserTasks)) { return(RedirectToAction("Index")); } RemoveTaskCookie(); RepositoryFactory repositoryFactory = WebSettingsConfig.Instance.GetRepositoryFactory(); UserTasksRepository userTasksRepository = repositoryFactory.CreateUserRepository(authorId); UserTask userTask = userTasksRepository.GetTask(key, true); if (userTask == null) { return(RedirectToAction("Index")); } BanRepository banRepository = repositoryFactory.GetBanRepository(); var banHelper = new BanHelper(Request); bool isBanned = banHelper.IsBanned(SectionId.UserTasks, userId, banRepository); userTask.SetIsBanned(isBanned); userTask.SetAllRights(userId == authorId); return(View("Detail", userTask)); }
public ActionResult Index(long userId, UserLanguages userLanguages) { const string EMPTY_WALL_VIEW = "EmptyWall"; if (WebSettingsConfig.Instance.IsSectionForbidden(SectionId.MyKnowledge)) { return(RedirectToAction("Index", RouteConfig.MAIN_CONTROLLER_NAME)); } if (IdValidator.IsInvalid(userId) || UserLanguages.IsInvalid(userLanguages)) { return(View(EMPTY_WALL_VIEW)); } IUserKnowledgeQuery userKnowledgeQuery = CreateUserKnowledgeQuery(userId); List <UserKnowledgeItem> items = GetData(userKnowledgeQuery, userLanguages, long.MaxValue); if (items == null || EnumerableValidator.IsEmpty(items)) { return(View(EMPTY_WALL_VIEW)); } //TODO: если будет тормозить - получать ajax'ом данные через action GetStatistic UserKnowledgeStatistic statistic = userKnowledgeQuery.GetStatistic(); return(View("Index", new KnowledgeWallModel(userLanguages, items) { Statistic = statistic })); }
public long CreateByHash(string userHash, string ip) { if (string.IsNullOrEmpty(userHash)) { LoggerWrapper.LogTo(LoggerName.Errors).ErrorFormat( "UsersQuery.CreateByHash передан пустой уникальный хэш. IP-адрес пользователя = {0}", ip); return(IdValidator.INVALID_ID); } long result = IdValidator.INVALID_ID; Adapter.ActionByContext(c => { DateTime now = DateTime.Now; var user = new User { UniqueHash = userHash, CreationDate = now, LastActivity = now, CreationIp = ip, LastIp = ip }; c.User.Add(user); c.SaveChanges(); if (IdValidator.IsValid(user.Id)) { result = user.Id; } else { result = IdValidator.INVALID_ID; LoggerWrapper.LogTo(LoggerName.Errors).ErrorFormat( "UsersQuery.CreateByHash не удалось создать пользователя с уникальным хэшом {0}. IP-адрес пользователя = {1}", userHash, ip); } }); return(result); }
public async Task <GetRepairDetailsResponse> GetCustomerRepairAsync(int id, CancellationToken cancellationToken) { var validator = new IdValidator(); await validator.ValidateAndThrowAsync(id, null, cancellationToken); var result = await _repairRepository.GetAsync(predicate : x => x.Id == id && x.CustomerId == _userContextProvider.UserId, cancellationToken, include : x => x .Include(x => x.UsedParts) .ThenInclude(x => x.Part) .Include(x => x.RequiredRepairTypes) .ThenInclude(x => x.RepairType) .Include(x => x.Customer) .Include(x => x.EmployeeRepairs) .ThenInclude(x => x.User) .Include(x => x.Invoice)); if (result == null) { throw new ServiceException(ErrorCodes.RepairWithGivenIdNotFound, $"Repair with provided id doesn't exist"); } return(_mapper.Map <GetRepairDetailsResponse>(result.FirstOrDefault())); }
private RepresentationForUser GetOrCreateRepresentation(RepresentationForUser representationForUser, StudyLanguageContext c) { Size size = representationForUser.Size; Representation representation = c.Representation.FirstOrDefault( e => e.Title == representationForUser.Title && e.LanguageId == _languageId); if (representation == null) { representation = new Representation { Title = representationForUser.Title, IsVisible = true, LanguageId = _languageId }; c.Representation.Add(representation); } representation.Image = representationForUser.Image; representation.Width = size.Width; representation.Height = size.Height; representation.WidthPercent = representationForUser.WidthPercent; representation.LastModified = DateTime.Now; c.SaveChanges(); return(IdValidator.IsValid(representation.Id) ? new RepresentationForUser(representation) : null); }
private async Task <IActionResult> FileResponseHelper(string fileId, string fileType) { var _asbestosActions = new AsbestosActions(_asbestosService, _loggerActions); try { if (!IdValidator.ValidateId(fileId)) { var developerMessage = $"Invalid parameter - file id"; var userMessage = "Please provide a valid file id"; return(new ErrorResponseBuilder().BuildErrorResponse( userMessage, developerMessage, (int)HttpStatusCode.BadRequest)); } var response = await _asbestosActions.GetFile(fileId, fileType); return(File(response.Data, response.ContentType)); } catch (MissingFileException ex) { var developerMessage = ex.Message; var userMessage = "Cannot find file"; return(new ErrorResponseBuilder().BuildErrorResponse( userMessage, developerMessage, (int)HttpStatusCode.NotFound)); } catch (Exception ex) { var userMessage = "We had some problems processing your request"; return(new ErrorResponseBuilder().BuildErrorResponseFromException( ex, userMessage)); } }
public bool IsUserBanned(SectionId sectionId, long userId, string userIp, string browserName) { KeyValueRepository commonRepository = _repositoryCache.GetCommonRepository(); UserBanInfo existingBanInfo; if (IdValidator.IsValid(userId)) { string userKey = GetUserKey(userId); existingBanInfo = GetUserBanInfo(commonRepository, userKey); if (existingBanInfo != null && existingBanInfo.IsBannedSection(sectionId)) { return(true); } } string anonymousKey = GetAnonymousUserKey(userIp, browserName); existingBanInfo = GetUserBanInfo(commonRepository, anonymousKey); if (existingBanInfo != null && existingBanInfo.IsBannedSection(sectionId)) { return(true); } return(false); }
public JsonResult AddComment(long userId, long authorId, string key, string comment, int lastShowedComment) { if (IdValidator.IsInvalid(authorId) || string.IsNullOrWhiteSpace(comment) || WebSettingsConfig.Instance.IsSectionForbidden(SectionId.UserTasks)) { return(JsonResultHelper.Error()); } if (comment.Length > UserTasksSettings.COMMENT_MAX_LENGTH) { return(JsonResultHelper.Error()); } RepositoryFactory repositoryFactory = WebSettingsConfig.Instance.GetRepositoryFactory(); BanRepository banRepository = repositoryFactory.GetBanRepository(); var banHelper = new BanHelper(Request); bool isBanned = banHelper.IsBanned(SectionId.UserTasks, userId, banRepository); if (isBanned) { return(JsonResultHelper.Error()); } banHelper.RegisterEvent(SectionId.UserTasks, "AddComment", userId, banRepository); UserTasksRepository userTasksRepository = repositoryFactory.CreateUserRepository(authorId); //TODO: получить пользователя и если у него указано имя, то заполнить Author comment = OurHtmlHelper.PrepareStringFromUser(comment); //TODO: дописывать (автор) к имени пользователя var taskComment = new TaskComment { Author = null, AuthorId = userId, CreationDate = DateTime.Now.Ticks, Text = comment }; bool isAddedComment = userTasksRepository.AddComment(key, taskComment); List <TaskComment> comments = userTasksRepository.GetComments(key, lastShowedComment); SendMail(string.Format("Пользователь {0} оставил комментарий к таску {1} автора {2}:\r\n{3}", userId, key, authorId, comment)); var htmlItems = new StringBuilder(); foreach (TaskComment newComment in comments) { string item = OurHtmlHelper.RenderRazorViewToString(ControllerContext, "PartialTaskComment", newComment); htmlItems.Insert(0, item); } return (JsonResultHelper.GetUnlimitedJsonResult( new { success = isAddedComment, newComments = htmlItems.ToString(), countNewComments = comments.Count })); }
public void Validate_WhenNationalIdTrueFormat_ReturnTrue() { var validator = new IdValidator(); var result = validator.Validate("65350205994"); Assert.That(result, Is.True); }
public ActionResult Image(long id) { if (IdValidator.IsInvalid(id)) { return(new EmptyResult()); } return(GetImage(new WordTranslationsQuery(), id)); }
public void Validate_WhenNationalIdWrongFormat_ReturnFalse(string nationalId) { var validator = new IdValidator(); var result = validator.Validate(nationalId); Assert.That(result, Is.False); }
public ActionResult Image(long id) { if (IdValidator.IsInvalid(id)) { return(new EmptyResult()); } return(GetImage(IoCModule.Create <WordTranslationsQuery>(), id)); }
protected ActionResult GetImage(IImageQuery imageQuery, long id, Func <byte[], byte[]> imageModifier = null) { if (IdValidator.IsInvalid(id)) { return(new EmptyResult()); } byte[] image = imageQuery.GetImageById(id); return(ImageToFile(imageModifier, image)); }
private bool SaveSentence(string sentenceText, List <Word> words) { //TODO: в случае неудачи - убирать за собой foreach (ParsedWord word in words) { string wordText = word.GetAppropriateWordText(); long wordId = SaveWords(word, wordText); if (IdValidator.IsInvalid(wordId)) { //не сохранять предложение, т.к. не все слова сохранены return(false); } } //TODO: поискать предложение с такими же словами, если есть, то не добавлять //сохранить предложение long sentenceId = _sentencesQuery.GetOrCreate(_languageId, sentenceText); if (IdValidator.IsInvalid(sentenceId)) { return(false); } bool result = true; int orderInSentence = 1; foreach (ParsedWord word in words) { long wordId; string wordText = word.GetAppropriateWordText(); if (!_wordsIdsByText.TryGetValue(wordText, out wordId)) { LoggerWrapper.LogTo(LoggerName.Errors).ErrorFormat( "TextProcessor.SaveSentence не удалось найти идентификатор для слова {0}, предложение {1}(идентификатор {2})!", wordText, sentenceId, sentenceText); result = false; break; } string originalText = word.Text; if (!_sentenceWordsQuery.CreateOrUpdate(sentenceId, wordId, originalText, orderInSentence, word.Type)) { LoggerWrapper.LogTo(LoggerName.Errors).ErrorFormat( "TextProcessor.SaveSentence не удалось сохранить слово {0}(идентификатор {1}) для предложения {2}(идентификатор {3})!", originalText, wordId, sentenceText, sentenceId); } orderInSentence++; } if (!_sentenceWordsQuery.DeleteGreaterOrEqualsOrderWords(sentenceId, orderInSentence)) { LoggerWrapper.LogTo(LoggerName.Errors).ErrorFormat( "TextProcessor.SaveSentence не удалось удалить слова для предложения {0}(идентификатор {1}), у которых порядковый номер больше или равен {2}!", sentenceText, sentenceId, orderInSentence); } return(result); }
private static IEnumerable <ValidationFailure> GetValidationFailures(ResourceElement defaultObservation) { var validator = new IdValidator(); var result = validator.Validate( new PropertyValidatorContext(new ValidationContext(defaultObservation), PropertyRule.Create <ResourceElement, string>(x => x.Id), "Id")); return(result); }
private static void ValidateUserId(Guid userId) { var validator = new IdValidator(); var result = validator.Validate(userId); if (!result.IsValid) { throw new IdentityDomainException($"'{nameof(userId)}' cannot be empty guid"); } }