public async Task <IActionResult> EditProviderWiseTransaction(ProviderWiseTransactionAC providerWiseTransactionAC)
        {
            string userId   = HttpContext.User.Claims.FirstOrDefault(c => c.Type == "user_id").Value;
            string fullname = HttpContext.User.Claims.FirstOrDefault(c => c.Type == "fullname").Value;

            return(Ok(await _iConfigurationRepository.UpdateProviderWiseTransaction(Convert.ToInt64(userId), providerWiseTransactionAC, fullname)));
        }
        public async Task <ResponseAC> UpdateTransactionTypeSetting(long userId, ProviderWiseTransactionAC providerWiseTransactionAC, string loginUserName)
        {
            ResponseAC response = new ResponseAC();

            foreach (var item in providerWiseTransactionAC.TransactionTypeList)
            {
                Transactiontypesetting transactionTypeSetting = await _dbTeleBilling_V01Context.Transactiontypesetting.FirstOrDefaultAsync(x => x.ProviderId == providerWiseTransactionAC.ProviderId && x.TransactionType.Trim().ToLower() == item.Name.Trim().ToLower() && x.Id == item.Id);

                transactionTypeSetting.SetTypeAs   = providerWiseTransactionAC.SetTypeAs;
                transactionTypeSetting.UpdatedBy   = userId;
                transactionTypeSetting.UpdatedDate = DateTime.Now;

                _dbTeleBilling_V01Context.Update(transactionTypeSetting);
                await _dbTeleBilling_V01Context.SaveChangesAsync();

                string setType = string.Empty;
                if (providerWiseTransactionAC.SetTypeAs == ((int)EnumList.AssignType.Employee))
                {
                    setType = "Personal";
                }
                else
                {
                    setType = "Business";
                }
                await _iLogManagement.SaveAuditActionLog((int)EnumList.AuditLogActionType.SetTypeOfTransactionTypeSetting, loginUserName, userId, "Provider wise transaction(transaction type: '" + transactionTypeSetting.TransactionType + "'; and set as type: '" + setType + "')", (int)EnumList.ActionTemplateTypes.SetTransactionType, transactionTypeSetting.Id);
            }
            response.Message    = _iStringConstant.TransactionTypeSettingUpdatedSuccessfully;
            response.StatusCode = Convert.ToInt16(EnumList.ResponseType.Success);
            return(response);
        }
        public async Task <ResponseAC> AddProviderWiseTransaction(long userId, ProviderWiseTransactionAC providerWiseTransactionAC, string loginUserName)
        {
            ResponseAC response = new ResponseAC();

            if (!await _dbTeleBilling_V01Context.Transactiontypesetting.AnyAsync(x => !x.IsDelete && x.ProviderId == providerWiseTransactionAC.ProviderId && x.TransactionType.ToLower().Trim() == providerWiseTransactionAC.TransactionType.ToLower().Trim()))
            {
                Transactiontypesetting transactionTypeSetting = _mapper.Map <Transactiontypesetting>(providerWiseTransactionAC);

                transactionTypeSetting.CreatedBy     = userId;
                transactionTypeSetting.IsActive      = true;
                transactionTypeSetting.CreatedDate   = DateTime.Now;
                transactionTypeSetting.TransactionId = _iLogManagement.GenerateTeleBillingTransctionID();

                await _dbTeleBilling_V01Context.AddAsync(transactionTypeSetting);

                await _dbTeleBilling_V01Context.SaveChangesAsync();

                response.Message    = _iStringConstant.ProviderWiseTransactionTypeAddedSuccessfully;
                response.StatusCode = Convert.ToInt16(EnumList.ResponseType.Success);
                await _iLogManagement.SaveAuditActionLog((int)EnumList.AuditLogActionType.AddProviderWiseTransactionType, loginUserName, userId, "Provider wise transaction(" + transactionTypeSetting.TransactionType + ")", (int)EnumList.ActionTemplateTypes.Add, transactionTypeSetting.Id);
            }
            else
            {
                response.Message    = _iStringConstant.ProviderWiseTransactionTypeAlreadyExists;
                response.StatusCode = Convert.ToInt16(EnumList.ResponseType.Error);
            }
            return(response);
        }
        public async Task <ProviderWiseTransactionAC> GetProviderWiseTransactionById(long id)
        {
            ProviderWiseTransactionAC providerWiseTransaction = new ProviderWiseTransactionAC();

            Transactiontypesetting transactionTypeSetting = await _dbTeleBilling_V01Context.Transactiontypesetting.FirstOrDefaultAsync(x => x.Id == id);

            providerWiseTransaction = _mapper.Map(transactionTypeSetting, providerWiseTransaction);
            return(providerWiseTransaction);
        }
        public async Task <ResponseAC> UpdateProviderWiseTransaction(long userId, ProviderWiseTransactionAC providerWiseTransactionAC, string loginUserName)
        {
            ResponseAC response = new ResponseAC();

            if (!await _dbTeleBilling_V01Context.Transactiontypesetting.AnyAsync(x => !x.IsDelete && x.Id != providerWiseTransactionAC.Id && x.ProviderId == providerWiseTransactionAC.ProviderId && x.TransactionType.ToLower().Trim() == providerWiseTransactionAC.TransactionType.ToLower().Trim()))
            {
                Transactiontypesetting transactionTypeSetting = await _dbTeleBilling_V01Context.Transactiontypesetting.FirstOrDefaultAsync(x => x.Id == providerWiseTransactionAC.Id);

                #region Transaction Log Entry
                if (transactionTypeSetting.TransactionId == null)
                {
                    transactionTypeSetting.TransactionId = _iLogManagement.GenerateTeleBillingTransctionID();
                }

                var jsonSerailzeObj = JsonConvert.SerializeObject(transactionTypeSetting);
                await _iLogManagement.SaveRequestTraseLog(Convert.ToInt64(transactionTypeSetting.TransactionId), userId, Convert.ToInt64(EnumList.TransactionTraseLog.UpdateRecord), jsonSerailzeObj);

                #endregion

                transactionTypeSetting             = _mapper.Map(providerWiseTransactionAC, transactionTypeSetting);
                transactionTypeSetting.UpdatedBy   = userId;
                transactionTypeSetting.UpdatedDate = DateTime.Now;

                _dbTeleBilling_V01Context.Update(transactionTypeSetting);
                await _dbTeleBilling_V01Context.SaveChangesAsync();

                response.Message    = _iStringConstant.ProviderWiseTransactionTypeUpdatedSuccessfully;
                response.StatusCode = Convert.ToInt16(EnumList.ResponseType.Success);
                //await _iLogManagement.SaveAuditActionLog((int)EnumList.AuditLogActionType.AddProviderWiseTransactionType, loginUserName, userId, "Provider wise transaction(" + transactionTypeSetting.TransactionType + ")", (int)EnumList.ActionTemplateTypes.Edit, transactionTypeSetting.Id);
            }
            else
            {
                response.Message    = _iStringConstant.ProviderWiseTransactionTypeAlreadyExists;
                response.StatusCode = Convert.ToInt16(EnumList.ResponseType.Error);
            }
            return(response);
        }