Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        /// <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) })");
        }
Ejemplo n.º 3
0
 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));
 }