public async Task <IActionResult> SaveDeck([FromBody] Deck deck) { var request = new SaveDeckRequest() { DeckData = deck }; var reply = await _client.SaveDeck(request, Timeouts.GLOBAL); if (!reply.Success) { return(StatusCode(500)); } return(Ok(reply.Response)); }
/// <summary> /// Saves deck for a user /// </summary> public async Task SaveUserDeck(SaveDeckRequest request) { LambdaLogger.Log($"Entering: SaveUserDeck({ JsonConvert.SerializeObject(request) })"); try { DeckStats deckStats = new DeckStats { CommanderName = request.CommanderName, DeckName = request.DeckName, Name = MTGServiceConstants.DeckStatsCardName, UserName = request.UserName, DeckMetricsJson = JsonConvert.SerializeObject(request.DeckMetrics) }; var existingDeckStats = SvcContext.Repository .DeckStats .FindFromUserAndDeckName(request.UserName, request.DeckName); if (existingDeckStats != null) { LambdaLogger.Log($"About to delete old deck stats: { request.DeckName }"); await SvcContext.Repository .DeckStats .Delete(existingDeckStats); } var existingDeckCards = SvcContext.Repository .DeckCards .FindFromUserAndDeckName(request.UserName, request.DeckName); if (existingDeckCards.Any()) { LambdaLogger.Log($"About to delete old deck cards: { request.DeckName }"); await SvcContext.Repository .DeckCards .Delete(existingDeckCards); } LambdaLogger.Log($"About to save deck stats: { JsonConvert.SerializeObject(deckStats) }"); await SvcContext.Repository .DeckStats .SaveAsync(new List <DeckStats> { deckStats }); LambdaLogger.Log($"About to save deck cards for user: { request.UserName } & commander: { request.CommanderName }"); var config = new MapperConfiguration(x => { x.CreateMap <Card, DeckCard>(); }); var mapper = config.CreateMapper(); var cards = SvcContext.Repository .Cards .FindFromNames(request.DeckCards.Select(x => x.Name).ToList()) .ToList(); var deckCards = new List <DeckCard>(); foreach (var card in cards) { if (card != null) { LambdaLogger.Log($"Found card for saved deck card: { JsonConvert.SerializeObject(card) }"); var newDeckCard = mapper.Map <Card, DeckCard>(card); newDeckCard.DeckName = request.DeckName; newDeckCard.UserName = request.UserName; deckCards.Add(newDeckCard); } } LambdaLogger.Log($"About to save cards: { JsonConvert.SerializeObject(deckCards) }"); await SvcContext.Repository .DeckCards .SaveAsync(deckCards); } catch (Exception exp) { LambdaLogger.Log($"Error: { exp }"); throw; } LambdaLogger.Log($"Leaving: SaveUserDeck({ JsonConvert.SerializeObject(request) })"); }
public Task <MessageResponse <Deck> > SaveDeck(SaveDeckRequest request, int millisecondsTimeout = -1, CancellationToken cancellationToken = default(CancellationToken)) { return(WriteAndReply <SaveDeckRequest, Deck>(Queueing.Queues.SaveDeck, request, null, millisecondsTimeout, cancellationToken)); }