public async Task <IActionResult> PostCardOfUser([FromBody] PostCardOfUserRequest card) { if (card.FrontSide == null) { return(ControllerError.BadRequest(localizer["InvalidCardEmptyFrontSide"].Value, this)); } if (card.BackSide == null) { card.BackSide = ""; } if (card.AdditionalInfo == null) { card.AdditionalInfo = ""; } if (card.FrontSideImageList == null) { return(ControllerError.BadRequest("Invalid input: card.FrontSideImageList == null", this)); } if (card.BackSideImageList == null) { return(ControllerError.BadRequest("Invalid input: card.BackSideImageList == null", this)); } if (card.AdditionalInfoImageList == null) { return(ControllerError.BadRequest("Invalid input: card.AdditionalInfoImageList == null", this)); } if (card.UsersWithVisibility == null) { return(ControllerError.BadRequest("Invalid input: card.UsersWithVisibility == null", this)); } if (card.Tags == null) { return(ControllerError.BadRequest("Invalid input: card.Tags == null", this)); } try { var user = await userManager.GetUserAsync(HttpContext.User); var versionDescription = localizer["InitialCardVersionCreation"].Value; var request = new CreateCard.Request(user, card.FrontSide, card.FrontSideImageList, card.BackSide, card.BackSideImageList, card.AdditionalInfo, card.AdditionalInfoImageList, card.LanguageId, card.Tags, card.UsersWithVisibility, versionDescription); var cardId = await new CreateCard(dbContext).RunAsync(request, localizer); if (card.AddToDeck != Guid.Empty) { await new AddCardInDeck(dbContext).RunAsync(card.AddToDeck, cardId); } return(Ok()); } catch (RequestInputException e) { return(ControllerError.BadRequest(e.Message, this)); } catch (Exception e) { return(ControllerError.BadRequest(e, this)); } }
private async Task GenerateNumberFromNameAsync(BeaufortForce f, Guid userId, Guid frenchLanguageId, Guid tagId) { var frontSide = $"Quel est le numéro de la force Beaufort _{f.Name}_ ?"; if (dbContext.Cards.Where(card => card.VersionCreator.Id == userId && card.FrontSide == frontSide).Any()) { logger.LogInformation($"Card already exists for {f.Name}: {frontSide}"); return; } var request = new CreateCard.Request(userId, frontSide, Array.Empty <Guid>(), $"_{f.Number}_", Array.Empty <Guid>(), additionalInfo, Array.Empty <Guid>(), frenchLanguageId, tagId.AsArray(), Array.Empty <Guid>(), CardVersionDescription); await new CreateCard(dbContext.AsCallContext()).RunAsync(request); }
private async Task GenerateMinSpeedForNameAsync(BeaufortForce f, Guid userId, Guid frenchLanguageId, Guid tagId) { var frontSide = $"Quelle est la plus faible vitesse de vent par force _{f.Name}_ ?{Environment.NewLine}(En nœuds)"; if (dbContext.Cards.Where(card => card.VersionCreator.Id == userId && card.FrontSide == frontSide).Any()) { logger.LogInformation($"Card already exists for {f.Name}: {frontSide}"); return; } var backSide = $"{f.MinWind} nœuds"; var request = new CreateCard.Request(userId, frontSide, Array.Empty <Guid>(), backSide, Array.Empty <Guid>(), additionalInfo, Array.Empty <Guid>(), frenchLanguageId, tagId.AsArray(), Array.Empty <Guid>(), CardVersionDescription); await new CreateCard(dbContext.AsCallContext()).RunAsync(request); }
private async Task CreateCard_WhatIsThisRegionAsync(Region region, MemCheckUser user, Guid regionsAndDepartmentsWithNamesImageId, Guid frenchLanguageId, Guid tagId) { var frontSide = "Comment s'appelle cette région française ?"; var backSide = region.Name; if (dbContext.Cards.Where(card => card.VersionCreator.Id == user.Id && card.FrontSide == frontSide && card.BackSide == backSide).Any()) { logger.LogInformation($"Card already exists for {region.Name}: {frontSide}"); return; } var frontSideImages = new[] { region.GetImageDbId(dbContext) }; var backSideImages = new[] { regionsAndDepartmentsWithNamesImageId }; var additionalInfo = $"Elle est constituée de ces {region.Departments.Count()} départements :{Environment.NewLine}{string.Join(Environment.NewLine, region.Departments)}{Environment.NewLine}{Environment.NewLine}En 2017, sa densité était de {region.Density} habitants par km² (la moyenne métropolitaine étant de 168 h/km²)."; var request = new CreateCard.Request(user, frontSide, frontSideImages, backSide, backSideImages, additionalInfo, new Guid[0], frenchLanguageId, new[] { tagId }, new Guid[0], CardVersionDescription); await new CreateCard(dbContext).RunAsync(request, new FakeStringLocalizer()); }
private async Task GenerateNameOfForceBelowNumberAsync(BeaufortForce f, Guid userId, Guid frenchLanguageId, Guid tagId) { var frontSide = $"Comment s'appelle la force Beaufort juste en-dessous de force {f.Number} ?"; if (dbContext.Cards.Where(card => card.VersionCreator.Id == userId && card.FrontSide == frontSide).Any()) { logger.LogInformation($"Card already exists for {f.Name}: {frontSide}"); return; } if (f.Number - 1 < 0) { return; } var backSide = $"_{forceFromNumber[f.Number - 1].Name}_"; var request = new CreateCard.Request(userId, frontSide, Array.Empty <Guid>(), backSide, Array.Empty <Guid>(), additionalInfo, Array.Empty <Guid>(), frenchLanguageId, tagId.AsArray(), Array.Empty <Guid>(), CardVersionDescription); await new CreateCard(dbContext.AsCallContext()).RunAsync(request); }
private async Task CreateCard_WhatAreTheDepartmentsInThisRegionAsync(Region region, MemCheckUser user, Guid regionsAndDepartmentsWithNamesImageId, Guid frenchLanguageId, Guid tagId) { var frontSide = $"Quels départements y a-t-il dans la région {region.Name} ?"; if (dbContext.Cards.Where(card => card.VersionCreator.Id == user.Id && card.FrontSide == frontSide).Any()) { logger.LogInformation($"Card already exists for {region.Name}: {frontSide}"); return; } var backSide = string.Join(Environment.NewLine, region.Departments); var frontSideImages = new Guid[0]; var backSideImages = new[] { regionsAndDepartmentsWithNamesImageId }; var additionalInfo = $"La région {region.Name} est constituée de {region.Departments.Count()} départements.{Environment.NewLine}En 2017, sa densité était de {region.Density} habitants par km² (la moyenne métropolitaine étant de 168 h/km²)."; var additionalInfoImages = new Guid[0]; var request = new CreateCard.Request(user, frontSide, frontSideImages, backSide, backSideImages, additionalInfo, additionalInfoImages, frenchLanguageId, new[] { tagId }, new Guid[0], CardVersionDescription); await new CreateCard(dbContext).RunAsync(request, new FakeStringLocalizer()); }
private async Task CreateCard_HowManyDepartmentsInThisRegionAsync(Region region, MemCheckUser user, Guid regionsAndDepartmentsWithNamesImageId, Guid frenchLanguageId, Guid tagId) { var frontSide = $"Combien y a-t-il de départements dans la région {region.Name} ?"; if (dbContext.Cards.Where(card => card.VersionCreator.Id == user.Id && card.FrontSide == frontSide).Any()) { logger.LogInformation($"Card already exists for {region.Name}: {frontSide}"); return; } var backSide = region.Departments.Count().ToString(); var frontSideImages = new Guid[0]; var backSideImages = new[] { regionsAndDepartmentsWithNamesImageId }; var additionalInfo = string.Join(Environment.NewLine, region.Departments); var additionalInfoImages = new Guid[0]; var request = new CreateCard.Request(user, frontSide, frontSideImages, backSide, backSideImages, additionalInfo, additionalInfoImages, frenchLanguageId, new[] { tagId }, new Guid[0], CardVersionDescription); await new CreateCard(dbContext).RunAsync(request, new FakeStringLocalizer()); }
private async Task CreateCard_WhereIsThisRegionAsync(Region region, MemCheckUser user, Guid regionsWithoutNamesImageId, Guid regionsAndDepartmentsWithNamesImageId, Guid frenchLanguageId, Guid tagId) { var frontSide = $"Où est la région {region.Name} ?"; if (dbContext.Cards.Where(card => card.VersionCreator.Id == user.Id && card.FrontSide == frontSide).Any()) { logger.LogInformation($"Card already exists for {region.Name}: {frontSide}"); return; } var backSide = ""; var frontSideImages = new[] { regionsWithoutNamesImageId }; var backSideImages = new[] { region.GetImageDbId(dbContext) }; var additionalInfo = $"Elle est constituée de ces {region.Departments.Length} départements :{Environment.NewLine}{string.Join(Environment.NewLine, region.Departments)}{Environment.NewLine}{Environment.NewLine}En 2017, sa densité était de {region.Density} habitants par km² (la moyenne métropolitaine étant de 168 h/km²)."; var additionalInfoImages = new[] { regionsAndDepartmentsWithNamesImageId }; var request = new CreateCard.Request(user.Id, frontSide, frontSideImages, backSide, backSideImages, additionalInfo, additionalInfoImages, frenchLanguageId, tagId.AsArray(), Array.Empty <Guid>(), CardVersionDescription); await new CreateCard(dbContext.AsCallContext()).RunAsync(request); }
async public Task RunAsync(MemCheckDbContext dbContext) { var lesson = GetPaukerLesson(); Console.WriteLine(string.Join(',', dbContext.Users)); var user = dbContext.Users.Where(user => user.UserName == "Voltan").Single(); var deck = dbContext.Decks.Where(deck => deck.Owner == user).First(); //var tag = dbContext.Tags.Where(tag => tag.Name == "PaukerImport").Single(); var cardLanguage = dbContext.CardLanguages.Where(cardLanguage => cardLanguage.Name == "Français").Single(); logger.LogInformation($"Cards will be added to deck {deck.Description} of user {user.UserName}");// and tag {tag.Name} will be attached"); const int paukerDisplayedStackIndex = 1; var stack = lesson.Stacks[paukerDisplayedStackIndex + 2]; logger.LogDebug($"Working on stack '{stack.Name}'"); logger.LogDebug($"Stack contains {stack.Cards.Count} cards"); for (int cardIndex = 0; cardIndex < stack.Cards.Count; cardIndex++) { logger.LogInformation($"Working on card {cardIndex} of {stack.Cards.Count}"); PaukerCard paukerCard = stack.Cards[cardIndex]; if (dbContext.Cards.Where(card => card.FrontSide == paukerCard.Front.Text.Trim()).Any()) { logger.LogInformation($"Card already exists in MemCheck with this front, skipping: {paukerCard.Front.Text}"); } else { //var creator = new CreateCard(dbContext); CreateCard.Request request = new CreateCard.Request( user, paukerCard.Front.Text.Trim(), new Guid[0], paukerCard.Reverse.Text.Trim(), new Guid[0], "", new Guid[0], cardLanguage.Id, new Guid[0], new[] { user.Id }, CardVersionDescription); var card = new Card() { FrontSide = request.FrontSide, BackSide = request.BackSide, AdditionalInfo = request.AdditionalInfo, CardLanguage = cardLanguage, VersionCreator = user, InitialCreationUtcDate = DateTime.Now.ToUniversalTime(), VersionUtcDate = DateTime.Now.ToUniversalTime() }; await dbContext.Cards.AddAsync(card); var usersWithView = new List <UserWithViewOnCard>(); var userWithView = new UserWithViewOnCard() { UserId = user.Id, User = user, CardId = card.Id, Card = card }; dbContext.UsersWithViewOnCards.Add(userWithView); usersWithView.Add(userWithView); card.UsersWithView = usersWithView; //return new GetCardsOfUser.ViewModel(card.Id, card.FrontSide, card.BackSide, card.TagsInCards.Select(tagInCard => tagInCard.Tag.Name)); //var card = await creator.RunAsync(request, user); var targetHeap = GetBestMemCheckHeap(paukerCard, paukerDisplayedStackIndex); var cardInDeck = new CardInDeck() { CardId = card.Id, DeckId = deck.Id, CurrentHeap = targetHeap, LastLearnUtcTime = paukerCard.LearnedDate().ToUniversalTime(), AddToDeckUtcTime = DateTime.UtcNow, NbTimesInNotLearnedHeap = 1, BiggestHeapReached = targetHeap }; await dbContext.CardsInDecks.AddAsync(cardInDeck); //dbContext.SaveChanges(); // var cardLoaded = dbContext.Cards.Where(card => card.Id == memCheckCard.Id).Include(card => card.UsersWithView).Single(); // if (!cardLoaded.UsersWithView.Contains(user)) // throw new ApplicationException(); } //logger.LogDebug($"In stack {paukerDisplayedStackIndex}, {expiredCount} would be expired"); } await dbContext.SaveChangesAsync(); }