/// <summary>
 /// Method return view Survey/Index.cshtml of Admin
 /// </summary>
 /// <returns></returns>
 public IActionResult Index()
 {
     try
     {
         SurveyListAdminModel listSurvey = new SurveyListAdminModel();
         //Get list Event and put it into search dropdown at Survey/Index.cshtml of Admin
         listSurvey.ListEvent = _unitOfWork.MasterDataRepository.GetSelectListEvent();
         return(View(listSurvey));
     }
     catch (Exception)
     {
         throw;
     }
 }
        public JsonResult LoadListSurveys(SurveyListAdminModel surveyList)
        {
            try
            {
                surveyList.SortColumnName = Request.Form["columns[" + Request.Form["order[0][column]"].FirstOrDefault() + "][name]"].FirstOrDefault();
                surveyList.SortDirection  = Request.Form["order[0][dir]"].FirstOrDefault();
                //Get list survey
                var data = _unitOfWork.SurveyRepository.LoadListSurveyAdmin(surveyList);

                //Put list survey to json result
                var result = Json(new
                {
                    data            = data.ListSurvey,
                    draw            = surveyList.Draw,
                    recordsFiltered = data.TotalRowsAfterFiltering
                });

                return(result);
            }
            catch (Exception e)
            {
                return(Json(new AjaxResponseModel(false, e.Message)));
            }
        }
        /// <summary>
        /// This method to get list Survey from DB and put it into Admin/List Survey
        /// </summary>
        /// <param name="surveyList"></param>
        /// <returns></returns>
        public SurveyListAdminModel LoadListSurveyAdmin(SurveyListAdminModel surveyList)
        {
            try
            {
                var listSurveyResult = new SurveyListAdminModel();
                var surveysIQuery    = _context.Surveys.Where(x => !x.IsDeleted);

                //Search survey with eventCd if eventCd is not null
                if (surveyList.EventCd != 0)
                {
                    surveysIQuery = surveysIQuery.Where(x => x.EventCd == surveyList.EventCd);
                }

                listSurveyResult.TotalRowsAfterFiltering = surveysIQuery.Count();

                //Sort And Paging
                surveysIQuery = Filtering(surveysIQuery, surveyList);

                listSurveyResult.ListSurvey = surveysIQuery
                                              .Select(s => new {
                    s.Cd,
                    s.InsertDate,
                    s.MediaCd,
                    MediaName = s.Media.Name,
                    s.VisitTime,
                    s.AgeRange,
                    s.Gender,
                    s.CareerCd,
                    CareerName = s.Career.Name,
                    s.IsMarried,
                    s.LivingStatus,
                    s.IsComeToBuy,
                    s.IsVisitedReception,
                    s.FavoriteArtist,
                    SurveyArtistName = s.SurveyArtists.Select(a => new
                    {
                        a.Artist.Name,
                        a.Artist.Code,
                    })
                })
                                              .AsEnumerable()
                                              .Select(m => new SurveyItemAdminModel()
                {
                    Cd                      = m.Cd,
                    InsertDate              = m.InsertDate?.ToString(ExactDateTimeFormat),
                    MediaName               = m.MediaName,
                    VisitTimeDescription    = ((VisitTime)m.VisitTime).GetEnumDescription(),
                    AgeRangeDescription     = ((AgeRange)m.AgeRange).GetEnumDescription(),
                    GenderName              = ((GenderOfSurvey)Convert.ToInt32(m.Gender)).GetEnumDescription(),
                    CareerName              = m.CareerName,
                    IsMarriedDescription    = ((IsMarried)Convert.ToInt32(m.IsMarried)).GetEnumDescription(),
                    LivingStatusDescription = ((LivingStatus)Convert.ToInt32(m.LivingStatus)).GetEnumDescription(),
                    IsComeToBuyDescription  = ((IsComeToBuy)Convert.ToInt32(m.IsComeToBuy)).GetEnumDescription(),
                    FavoriteArtist          = m.FavoriteArtist,
                    SurveyArtistName        = m.SurveyArtistName.OrderBy(m => m.Code).Select(y => y.Name).ToList(),
                }).ToList();

                return(listSurveyResult);
            }
            catch (Exception)
            {
                throw;
            }
        }