コード例 #1
0
        private async Task SendPushBulkWithAddPushAsync(List <Domain.Dto.UserDeviceDto> userDeviceIds, GeneralSetting serverApiKey, PushNotifications push, Domain.Dto.RewardsOnDate item)
        {
            await push.SendPushBulk(userDeviceIds.Select(m => m.UserDeviceId).ToList(), notificationTitle, notificationMessage, "", item.RewardId.ToString(), "awards", "icon", "awards", 1, (serverApiKey != null ? serverApiKey.Value : ""), true, "ProgressRewards", item.MerchantId);

            await _userPushedNotificationService.AddAsync(new UserPushedNotifications()
            {
                notificationMessage = notificationMessage,
                notificationTitle   = notificationTitle,
                notificationType    = (int)NotificationSettingsEnum.Awards,
                referenceId         = item.RewardId,
                createdBy           = item.CreatedBy,
                modifiedBy          = item.CreatedBy,
                ProgramId           = item.ProgramId,
                IsRedirect          = true,
                NotificationSubType = "ProgressRewards",
                CustomReferenceId   = item.MerchantId
            });
        }
コード例 #2
0
        public async Task <IActionResult> AddUserTransaction(FiservMainTransactionModel model)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(Ok(new ApiBadRequestResponse(ModelState, MessagesConstants.BadRequest))); //400
                }
                var userIdClaim = Convert.ToInt32(User.Claims.FirstOrDefault(x => x.Type.ToLower(CultureInfo.InvariantCulture).Trim() == "userId".ToLower(CultureInfo.InvariantCulture).Trim()).Value);

                if (model.ProgramAccountIdSelected > 0)
                {
                    var planProgram = await _programAccount.GetUserProgramPlanNOrgByProgramAccountId(model.ProgramAccountIdSelected, model.CreditUserId);

                    model.PlanId         = planProgram?.planId;
                    model.ProgramId      = planProgram?.programId;
                    model.OrganizationId = planProgram?.OrganizationId;
                    model.AccountTypeId  = planProgram?.AccountTypeId;
                    model.OrganizationId = planProgram.OrganizationId;
                }
                var objUserTransaction = new UserTransactionInfo()
                {
                    accountTypeId = 3,
                    //accountTypeId = model.AccountTypeId,
                    createdBy   = userIdClaim,
                    createdDate = DateTime.UtcNow,
                    CreditTransactionUserType = TransactionUserEnityType.User,
                    creditUserId             = model.CreditUserId,
                    debitUserId              = userIdClaim,
                    DebitTransactionUserType = TransactionUserEnityType.Benefactor,
                    isActive                  = true,
                    isDeleted                 = false,
                    modifiedBy                = userIdClaim,
                    modifiedDate              = DateTime.UtcNow,
                    organisationId            = model.OrganizationId,
                    transactionAmount         = model.approvedAmount.total,
                    transactionDate           = model.TransactionDateTime,
                    TransactionId             = model.ipgTransactionId,
                    transactionStatus         = 1,
                    TransactionPaymentGateway = model.TransactionPaymentGateway,
                    //   programAccountId = model.ProgramAccountIdSelected,
                    programAccountId = model.ProgramId.Value,
                    programId        = model.ProgramId.Value,
                    planId           = model.PlanId,
                };
                var transactionUserAdd = await _userTransactionService.AddAsync(objUserTransaction);

                if (model.AccountTypeId == 3)
                {
                    var userCardAccountBalance = await _i2cAccountDetail.FindAsync(new { UserId = model.CreditUserId });

                    if (userCardAccountBalance != null)
                    {// That will work only for discretionary for i2c later
                        userCardAccountBalance.Balance = userCardAccountBalance.Balance + objUserTransaction.transactionAmount;
                        await _i2cAccountDetail.UpdateAsync(userCardAccountBalance, new { Id = userCardAccountBalance.Id });
                    }
                }
                var creditUserDetail = await _userRepository.FindAsync(new { Id = model.CreditUserId });

                var debitUserDetail = await _userRepository.FindAsync(new { Id = userIdClaim });

                /*  Notification  */
                var balanceContent = string.Empty;
                if (model.AccountTypeId == 1)
                {
                    balanceContent = string.Concat(objUserTransaction.transactionAmount, " meal passes");
                }
                else if (model.AccountTypeId == 2)
                {
                    balanceContent = string.Concat(objUserTransaction.transactionAmount, " flex points");
                }
                else if (model.AccountTypeId == 3)
                {
                    balanceContent = string.Concat("$", objUserTransaction.transactionAmount);
                }
                string notificationMessage = MessagesConstants.BalanceAddedNotificationMessage.Replace("{Benefactor}", string.Concat(debitUserDetail?.FirstName, " ", debitUserDetail?.LastName)).Replace("{Balance}", balanceContent), notificationTitle = MessagesConstants.BalanceAddedNotifyTitle;
                var    programNotificationSetCheck = await _program.FindAsync(new { id = creditUserDetail?.ProgramId });

                if (programNotificationSetCheck != null && programNotificationSetCheck.IsAllNotificationShow.Value)
                {
                    var serverApiKey       = (await _setting.GetGeneratSettingValueByKeyGroup(Constants.FireBaseConstants.FireBaseServerKey)).FirstOrDefault();
                    PushNotifications push = new PushNotifications();
                    var usrNotify          = await _userNotificationSettingsService.GetUserNotificationSettingByNotificaction(new List <int> {
                        creditUserDetail.Id
                    }, (int)NotificationSettingsEnum.Transaction);

                    if (usrNotify.Count > 0)
                    {
                        await push.SendPushBulk(new List <string> {
                            creditUserDetail?.UserDeviceId
                        }, notificationTitle, notificationMessage, "", userIdClaim.ToString(), "transaction", "icon", "transaction", 1, (serverApiKey != null ? serverApiKey.Value : ""), false, "AddBalance", 0);
                    }
                }
                await _userPushedNotificationService.AddAsync(new UserPushedNotifications()
                {
                    notificationMessage = notificationMessage,
                    notificationTitle   = notificationTitle,
                    notificationType    = (int)NotificationSettingsEnum.Transaction,
                    referenceId         = 1,
                    createdBy           = userIdClaim,
                    modifiedBy          = userIdClaim,
                    ProgramId           = creditUserDetail?.ProgramId,
                    userId              = creditUserDetail.Id,
                    IsRedirect          = true,
                    NotificationSubType = "AddBalance",
                    CustomReferenceId   = 0
                });

                return(Ok(new ApiResponse(Microsoft.AspNetCore.Http.StatusCodes.Status200OK, true, MessagesConstants.DataSuccessfullyReturned, transactionUserAdd)));
            }
            catch (Exception ex)
            {
                HttpContext.RiseError(new Exception(string.Concat("API := (UserTransactions := AddUserTransaction)", ex.Message, " Stack Trace : ", ex.StackTrace, " Inner Exception : ", ex.InnerException)));
                return(Ok(new ApiResponse(StatusCodes.Status200OK, false, MessagesConstants.SomeIssueInProcessing)));
            }
        }