Example #1
0
        private Result <Card> UpdateCurrency(IServiceProvider serviceProvider, Card editedCard)
        {
            Result <Card> result = new Result <Card>();

            try
            {
                ICardSystemRepository <Card> repo = serviceProvider.GetService <ICardSystemRepository <Card> >();
                Card entity = repo.FirstOrDefault(x => x.Id == editedCard.Id);
                if (entity == null)
                {
                    _logger.LogException("BusinessServices.CanPlayService.UpdateCurrency => Entity not found!");
                    result.Messages.Add("Entity not found!");
                    result.IsSuccess = false;
                    return(result);
                }
                if (entity.ExternalId != editedCard.ExternalId)
                {
                    if (!IsExternalIdUnique(serviceProvider, editedCard.ExternalId, entity.Id))
                    {
                        _logger.LogException("BusinessServices.CanPlayService.UpdateCurrency => External ID is not UNIQUE!");
                        result.Messages.Add("External ID is not UNIQUE!");
                        result.IsSuccess = false;
                        return(result);
                    }
                }
                //Currency1
                entity.Currency1Balance      = editedCard.Currency1Balance;
                entity.Currency1BalanceBonus = editedCard.Currency1BalanceBonus;
                entity.Currency1Code         = editedCard.Currency1Code;
                entity.Currency1Name         = editedCard.Currency1Name;
                entity.Currency1TotalIncome  = editedCard.Currency1TotalIncome;
                entity.Currency1TotalSpend   = editedCard.Currency1TotalSpend;
                //CurrencyBonus
                entity.CurrencyBonusBalance      = editedCard.CurrencyBonusBalance;
                entity.CurrencyBonusBalanceBonus = editedCard.CurrencyBonusBalanceBonus;
                entity.CurrencyBonusCode         = editedCard.CurrencyBonusCode;
                entity.CurrencyBonusName         = editedCard.CurrencyBonusName;
                entity.CurrencyBonusTotalIncome  = editedCard.CurrencyBonusTotalIncome;
                entity.CurrencyBonusTotalSpend   = editedCard.CurrencyBonusTotalSpend;
                //CurrencyCredit
                entity.CurrencyCreditBalance      = editedCard.CurrencyCreditBalance;
                entity.CurrencyCreditBalanceBonus = editedCard.CurrencyCreditBalanceBonus;
                entity.CurrencyCreditCode         = editedCard.CurrencyCreditCode;
                entity.CurrencyCreditName         = editedCard.CurrencyCreditName;
                entity.CurrencyCreditTotalIncome  = editedCard.CurrencyCreditTotalIncome;
                entity.CurrencyCreditTotalSpend   = editedCard.CurrencyCreditTotalSpend;
                //CurrencyPrimary
                entity.CurrencyPrimaryBalance      = editedCard.CurrencyPrimaryBalance;
                entity.CurrencyPrimaryBalanceBonus = editedCard.CurrencyPrimaryBalanceBonus;
                entity.CurrencyPrimaryCode         = editedCard.CurrencyPrimaryCode;
                entity.CurrencyPrimaryName         = editedCard.CurrencyPrimaryName;
                entity.CurrencyPrimaryTotalIncome  = editedCard.CurrencyPrimaryTotalIncome;
                entity.CurrencyPrimaryTotalSpend   = editedCard.CurrencyPrimaryTotalSpend;
                //CurrencyTicket
                entity.CurrencyTicketBalance      = editedCard.CurrencyTicketBalance;
                entity.CurrencyTicketBalanceBonus = editedCard.CurrencyTicketBalanceBonus;
                entity.CurrencyTicketCode         = editedCard.CurrencyTicketCode;
                entity.CurrencyTicketName         = editedCard.CurrencyTicketName;
                entity.CurrencyTicketTotalIncome  = editedCard.CurrencyTicketTotalIncome;
                entity.CurrencyTicketTotalSpend   = editedCard.CurrencyTicketTotalSpend;
                //CurrencyTime
                entity.CurrencyTimeBalance      = editedCard.CurrencyTimeBalance;
                entity.CurrencyTimeBalanceBonus = editedCard.CurrencyTimeBalanceBonus;
                entity.CurrencyTimeCode         = editedCard.CurrencyTimeCode;
                entity.CurrencyTimeName         = editedCard.CurrencyTimeName;
                entity.CurrencyTimeTotalIncome  = editedCard.CurrencyTimeTotalIncome;
                entity.CurrencyTimeTotalSpend   = editedCard.CurrencyTimeTotalSpend;

                entity.FreePeriod          = editedCard.FreePeriod;
                entity.FreePeriodStart     = editedCard.FreePeriodStart;
                entity.FreePeriodEnd       = editedCard.FreePeriodEnd;
                entity.LastTransactionTime = DateTime.UtcNow;
                repo.Update();

                // update cache
                Card cachedEntity = CardCacheServiceV2.Instance.GetCard(serviceProvider, entity.Id);
                if (cachedEntity != null)
                {
                    //Currency1
                    cachedEntity.Currency1Balance      = entity.Currency1Balance;
                    cachedEntity.Currency1BalanceBonus = entity.Currency1BalanceBonus;
                    cachedEntity.Currency1Code         = entity.Currency1Code;
                    cachedEntity.Currency1Name         = entity.Currency1Name;
                    cachedEntity.Currency1TotalIncome  = entity.Currency1TotalIncome;
                    cachedEntity.Currency1TotalSpend   = entity.Currency1TotalSpend;
                    //CurrencyBonus
                    cachedEntity.CurrencyBonusBalance      = entity.CurrencyBonusBalance;
                    cachedEntity.CurrencyBonusBalanceBonus = entity.CurrencyBonusBalanceBonus;
                    cachedEntity.CurrencyBonusCode         = entity.CurrencyBonusCode;
                    cachedEntity.CurrencyBonusName         = entity.CurrencyBonusName;
                    cachedEntity.CurrencyBonusTotalIncome  = entity.CurrencyBonusTotalIncome;
                    cachedEntity.CurrencyBonusTotalSpend   = entity.CurrencyBonusTotalSpend;
                    //CurrencyCredit
                    cachedEntity.CurrencyCreditBalance      = entity.CurrencyCreditBalance;
                    cachedEntity.CurrencyCreditBalanceBonus = entity.CurrencyCreditBalanceBonus;
                    cachedEntity.CurrencyCreditCode         = entity.CurrencyCreditCode;
                    cachedEntity.CurrencyCreditName         = entity.CurrencyCreditName;
                    cachedEntity.CurrencyCreditTotalIncome  = entity.CurrencyCreditTotalIncome;
                    cachedEntity.CurrencyCreditTotalSpend   = entity.CurrencyCreditTotalSpend;
                    //CurrencyPrimary
                    cachedEntity.CurrencyPrimaryBalance      = entity.CurrencyPrimaryBalance;
                    cachedEntity.CurrencyPrimaryBalanceBonus = entity.CurrencyPrimaryBalanceBonus;
                    cachedEntity.CurrencyPrimaryCode         = entity.CurrencyPrimaryCode;
                    cachedEntity.CurrencyPrimaryName         = entity.CurrencyPrimaryName;
                    cachedEntity.CurrencyPrimaryTotalIncome  = entity.CurrencyPrimaryTotalIncome;
                    cachedEntity.CurrencyPrimaryTotalSpend   = entity.CurrencyPrimaryTotalSpend;
                    //CurrencyTicket
                    cachedEntity.CurrencyTicketBalance      = entity.CurrencyTicketBalance;
                    cachedEntity.CurrencyTicketBalanceBonus = entity.CurrencyTicketBalanceBonus;
                    cachedEntity.CurrencyTicketCode         = entity.CurrencyTicketCode;
                    cachedEntity.CurrencyTicketName         = entity.CurrencyTicketName;
                    cachedEntity.CurrencyTicketTotalIncome  = entity.CurrencyTicketTotalIncome;
                    cachedEntity.CurrencyTicketTotalSpend   = entity.CurrencyTicketTotalSpend;
                    //CurrencyTime
                    cachedEntity.CurrencyTimeBalance      = entity.CurrencyTimeBalance;
                    cachedEntity.CurrencyTimeBalanceBonus = entity.CurrencyTimeBalanceBonus;
                    cachedEntity.CurrencyTimeCode         = entity.CurrencyTimeCode;
                    cachedEntity.CurrencyTimeName         = entity.CurrencyTimeName;
                    cachedEntity.CurrencyTimeTotalIncome  = entity.CurrencyTimeTotalIncome;
                    cachedEntity.CurrencyTimeTotalSpend   = entity.CurrencyTimeTotalSpend;

                    cachedEntity.FreePeriod          = entity.FreePeriod;
                    cachedEntity.FreePeriodStart     = entity.FreePeriodStart;
                    cachedEntity.FreePeriodEnd       = entity.FreePeriodEnd;
                    cachedEntity.LastTransactionTime = entity.LastTransactionTime;
                    CardCacheServiceV2.Instance.AddCard(serviceProvider, cachedEntity);
                    CardCacheServiceV2.Instance.AddNewMap(cachedEntity);
                }

                result.Data      = entity;
                result.IsSuccess = true;

                return(result);
            }
            catch (Exception ex)
            {
                _logger.LogException($"BusinessServices.CanPlayService.UpdateCurrency throws: {ex.Message}");
                result.Messages.Add($"Cannot edit card currencies! Something went wrong. {ex.Message}");
                result.IsSuccess = false;

                return(result);
            }
        }