public IActionResult _AddEditInvitationCode()
        {
            var result = _invitationCodesService.GetAll().ToList();

            if (result.Count > 0)
            {
                var invitationCodeModel = new InvitationCodeDto()
                {
                    NoOfFreeDays      = result.FirstOrDefault().NumberOfFreeDays,
                    NoOfFreeQuestions = result.FirstOrDefault().NumberOfFreeQuestions,
                    ExpirationDays    = result.FirstOrDefault().ExpirationDays,
                    Id = result.FirstOrDefault().Id
                };
                return(View(@"Components/_AddEditInvitationCode", invitationCodeModel));
            }
            return(View(@"Components/_AddEditInvitationCode", new InvitationCodeDto {
                Id = 0
            }));
        }
        public async Task <IActionResult> AddEditInvitationCode(InvitationCodeDto model)
        {
            using (var txscope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
            {
                try
                {
                    if (!ModelState.IsValid)
                    {
                        txscope.Dispose();
                        RedirectToAction("_AddEditInvitationCode", model.Id);
                    }

                    if (model.Id == 0)
                    {
                        var invitationCodeObj = Mapper.Map <InvitationCode>(model);
                        invitationCodeObj.IsActive              = true;
                        invitationCodeObj.NumberOfFreeDays      = model.NoOfFreeDays;
                        invitationCodeObj.NumberOfFreeQuestions = model.NoOfFreeQuestions;
                        invitationCodeObj.ExpirationDays        = model.ExpirationDays;

                        var result = await _invitationCodesService.InsertAsync(invitationCodeObj, Accessor, User.GetUserId());

                        if (result != null)
                        {
                            //StaffLog
                            if (User.IsInRole(UserRoles.Staff))
                            {
                                await _staffLog.InsertAsync(new Log { CreatedDate = DateTime.UtcNow, StaffId = User.GetUserId(), Description = ResponseConstants.CreateInvitaionCode }, Accessor, User.GetUserId());
                            }
                            txscope.Complete();
                            return(JsonResponse.GenerateJsonResult(1, ResponseConstants.CreateInvitaionCode));
                        }
                    }
                    else if (model != null)
                    {
                        var result = await _invitationCodesService.GetSingleAsync(x => x.Id == model.Id && x.IsActive == true && x.IsDelete == false);

                        result.NumberOfFreeDays      = model.NoOfFreeDays;
                        result.NumberOfFreeQuestions = model.NoOfFreeQuestions;
                        result.ExpirationDays        = model.ExpirationDays;
                        result.IsActive = true;
                        await _invitationCodesService.UpdateAsync(result, Accessor, User.GetUserId());


                        //StaffLog
                        if (User.IsInRole(UserRoles.Staff))
                        {
                            await _staffLog.InsertAsync(new Log { CreatedDate = DateTime.UtcNow, StaffId = User.GetUserId(), Description = ResponseConstants.UpdateInvitationCode }, Accessor, User.GetUserId());
                        }
                        txscope.Complete();
                        return(JsonResponse.GenerateJsonResult(1, ResponseConstants.UpdateInvitationCode));
                    }
                    else
                    {
                        txscope.Dispose();
                        return(JsonResponse.GenerateJsonResult(0, ResponseConstants.SomethingWrong));
                    }

                    txscope.Dispose();
                    return(JsonResponse.GenerateJsonResult(0, ResponseConstants.SomethingWrong));
                }
                catch (Exception ex)
                {
                    txscope.Dispose();
                    ErrorLog.AddErrorLog(ex, "CreateInvitationCodeSetUp");
                    return(Json(ResponseConstants.SomethingWrong));
                }
            }
        }