public async Task <IActionResult> EditRole(RoleAC roleAC)
        {
            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 _iRoleRepository.EditRole(roleAC, Convert.ToInt64(userId), fullname)));
        }
        public async Task <ResponseAC> AddRole(RoleAC roleAC, long userId, string loginUserName)
        {
            ResponseAC responeAC = new ResponseAC();

            if (!await _dbTeleBilling_V01Context.MstRole.AnyAsync(x => x.RoleName.ToLower() == roleAC.RoleName.Trim().ToLower() && !x.IsDelete))
            {
                MstRole mstRole = new MstRole();
                mstRole.IsActive      = true;
                mstRole.RoleName      = roleAC.RoleName.Trim();
                mstRole.CreatedBy     = userId;
                mstRole.CreatedDate   = DateTime.Now;
                mstRole.TransactionId = _iLogManagement.GenerateTeleBillingTransctionID();
                try
                {
                    await _dbTeleBilling_V01Context.AddAsync(mstRole);

                    await _dbTeleBilling_V01Context.SaveChangesAsync();

                    await _iLogManagement.SaveAuditActionLog((int)EnumList.AuditLogActionType.AddRole, loginUserName, userId, "Role(" + roleAC.RoleName.Trim() + ")", (int)EnumList.ActionTemplateTypes.Add, mstRole.RoleId);
                }
                catch (Exception e)
                {
                    throw e;
                }
                responeAC.Message    = _iStringConstant.RoleAddedSuccessfully;
                responeAC.StatusCode = Convert.ToInt16(EnumList.ResponseType.Success);
            }
            else
            {
                responeAC.Message    = _iStringConstant.RoleExists;
                responeAC.StatusCode = Convert.ToInt16(EnumList.ResponseType.Error);
            }
            return(responeAC);
        }
        public async Task <ResponseAC> EditRole(RoleAC roleAC, long userId, string loginUserName)
        {
            ResponseAC responeAC = new ResponseAC();

            try
            {
                if (!await _dbTeleBilling_V01Context.MstRole.AnyAsync(x => x.RoleId != roleAC.RoleId && x.RoleName.ToLower() == roleAC.RoleName.Trim().ToLower() && !x.IsDelete))
                {
                    MstRole mstRole = await _dbTeleBilling_V01Context.MstRole.FirstOrDefaultAsync(x => x.RoleId == roleAC.RoleId && !x.IsDelete);

                    #region Transaction Log Entry

                    if (mstRole.TransactionId == null)
                    {
                        mstRole.TransactionId = _iLogManagement.GenerateTeleBillingTransctionID();
                    }

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

                    #endregion

                    mstRole.RoleName    = roleAC.RoleName.Trim();
                    mstRole.UpdatedBy   = userId;
                    mstRole.UpdatedDate = DateTime.Now;
                    _dbTeleBilling_V01Context.Update(mstRole);
                    await _dbTeleBilling_V01Context.SaveChangesAsync();

                    responeAC.Message    = _iStringConstant.RoleUpdatedSuccessfully;
                    responeAC.StatusCode = Convert.ToInt16(EnumList.ResponseType.Success);
                    await _iLogManagement.SaveAuditActionLog((int)EnumList.AuditLogActionType.EditRole, loginUserName, userId, "Role(" + roleAC.RoleName.Trim() + ")", (int)EnumList.ActionTemplateTypes.Edit, mstRole.RoleId);
                }
                else
                {
                    responeAC.Message    = _iStringConstant.RoleExists;
                    responeAC.StatusCode = Convert.ToInt16(EnumList.ResponseType.Error);
                }
            }
            catch (Exception e)
            {
                throw e;
            }

            return(responeAC);
        }