コード例 #1
0
        public ActionResult List(ListViewModel model)
        {
            // filter bilgilerinin default boş değerlerle doldurulması sağlanıyor
            if (model.Filter == null)
            {
                model.Filter = new ListFilterViewModel();
            }

            if (!model.CurrentPage.HasValue)
            {
                model.CurrentPage = 1;
            }

            if (!model.PageSize.HasValue)
            {
                model.PageSize = 10;
            }

            BroadcastSearchFilter searchFilter = new BroadcastSearchFilter();

            searchFilter.CurrentPage = model.CurrentPage.HasValue ? model.CurrentPage.Value : 1;
            searchFilter.PageSize    = model.PageSize.HasValue ? model.PageSize.Value : 10;

            searchFilter.SortOn                 = model.SortOn;
            searchFilter.SortDirection          = model.SortDirection;
            searchFilter.Filter_BroadcastTypeId = BroadcastTypeStatic.Announcement;
            model.Filter.Filter_BroadcastTypeId = BroadcastTypeStatic.Announcement;
            searchFilter.Filter_TitleEN         = model.Filter.Filter_TitleEN;
            searchFilter.Filter_TitleTR         = model.Filter.Filter_TitleTR;
            if (model.Filter.Filter_ValidationEndDateTime.HasValue)
            {
                searchFilter.Filter_ValidationEndDateTimeAsString = model.Filter.Filter_ValidationEndDateTime.Value.ToString("yyyy-MM-dd");
            }
            searchFilter.Filter_IsActive = model.Filter.Filter_IsActive;
            model.CurrentLanguageTwoChar = SessionHelper.CurrentLanguageTwoChar;
            // select lists
            model.FilterIsActiveSelectList = GetIsActiveSelectList(SessionHelper.CurrentLanguageTwoChar);

            var apiResponseModel = _broadcastService.GetAllPaginatedWithDetailBySearchFilter(SessionHelper.CurrentUser.UserToken, SessionHelper.CurrentLanguageTwoChar, searchFilter);

            if (apiResponseModel.ResultStatusCode == ResultStatusCodeStatic.Success)
            {
                model.DataList = apiResponseModel.Data;
            }
            else
            {
                model.DataList           = new Business.Models.PaginatedList <BroadcastWithDetail>();
                model.DataList.Items     = new List <BroadcastWithDetail>();
                ViewBag.ErrorMessage     = apiResponseModel.ResultStatusMessage;
                ViewBag.ErrorMessageList = apiResponseModel.ErrorMessageList;
                return(View(model));
            }
            return(View(model));
        }
コード例 #2
0
        public IActionResult GetByBroadcastType(string broadcastType, [FromQuery] GetAllPaginatedWhichIsActiveRequestModel requestModel, [FromHeader] string displayLanguage)
        {
            var responseModel = new ApiResponseModel <PaginatedList <BroadcastWithDetail> > {
                DisplayLanguage = displayLanguage
            };

            // Set broadcast type name by route
            if (!Enum.TryParse(typeof(BroadcastTypeEnum), broadcastType, true, out var broadcastTypeId))
            {
                responseModel.ResultStatusCode    = ResultStatusCodeStatic.Error;
                responseModel.ResultStatusMessage = $"'{broadcastType}' resource not found";

                return(NotFound(responseModel));
            }

            var fileHostBaseUrl = GetFileHostBaseUrlFromCurrentRequest(); // şirket resimlerinin tam url adres bilgisi icin kullanilacak

            try
            {
                var searchFilter = new BroadcastSearchFilter();
                searchFilter.CurrentPage            = requestModel.CurrentPage.HasValue ? requestModel.CurrentPage.Value : 1;
                searchFilter.PageSize               = requestModel.PageSize.HasValue ? requestModel.PageSize.Value : 10;
                searchFilter.SortOn                 = requestModel.SortOn;
                searchFilter.SortDirection          = requestModel.SortDirection;
                searchFilter.Filter_BroadcastTypeId = (int)broadcastTypeId;
                responseModel.Data = _broadcastService.GetAllPaginatedWhichIsActiveWithDetailBySearchFilter(searchFilter);

                //resimlerin link olarak geriye döndürülmesi
                if (responseModel.Data != null && responseModel.Data.Items.Count > 0)
                {
                    foreach (var item in responseModel.Data.Items)
                    {
                        if (item.ImageFilePath != null)
                        {
                            item.ImageFilePath = fileHostBaseUrl + "" + item.ImageFilePath;
                        }
                    }
                }

                responseModel.ResultStatusCode    = ResultStatusCodeStatic.Success;
                responseModel.ResultStatusMessage = "Success";
                return(Ok(responseModel));
            }
            catch (Exception ex)
            {
                responseModel.ResultStatusCode    = ResultStatusCodeStatic.Error;
                responseModel.ResultStatusMessage = ex.Message;
                responseModel.Data = null;
                return(StatusCode(StatusCodes.Status500InternalServerError, responseModel));
            }
        }
コード例 #3
0
        public ActionResult List(string errorMessage = "")
        {
            if (!string.IsNullOrEmpty(errorMessage))
            {
                ViewBag.ErrorMessage = errorMessage;
            }
            ListViewModel model = new ListViewModel();

            model.Filter      = new ListFilterViewModel();
            model.CurrentPage = 1;
            model.PageSize    = 10;

            BroadcastSearchFilter searchFilter = new BroadcastSearchFilter();

            searchFilter.CurrentPage   = model.CurrentPage.HasValue ? model.CurrentPage.Value : 1;
            searchFilter.PageSize      = model.PageSize.HasValue ? model.PageSize.Value : 10;
            searchFilter.SortOn        = model.SortOn;
            searchFilter.SortDirection = model.SortDirection;
            if (model.Filter.Filter_ValidationEndDateTime.HasValue)
            {
                searchFilter.Filter_ValidationEndDateTimeAsString = model.Filter.Filter_ValidationEndDateTime.Value.ToString("yyyy-MM-dd");
            }
            searchFilter.Filter_BroadcastTypeId = BroadcastTypeStatic.Announcement;
            model.Filter.Filter_BroadcastTypeId = BroadcastTypeStatic.Announcement;
            model.CurrentLanguageTwoChar        = SessionHelper.CurrentLanguageTwoChar;
            // select lists
            model.FilterIsActiveSelectList = GetIsActiveSelectList(SessionHelper.CurrentLanguageTwoChar);

            var apiResponseModel = _broadcastService.GetAllPaginatedWithDetailBySearchFilter(SessionHelper.CurrentUser.UserToken, SessionHelper.CurrentLanguageTwoChar, searchFilter);

            if (apiResponseModel.ResultStatusCode == ResultStatusCodeStatic.Success)
            {
                model.DataList = apiResponseModel.Data;
            }
            else
            {
                model.DataList           = new Business.Models.PaginatedList <BroadcastWithDetail>();
                model.DataList.Items     = new List <BroadcastWithDetail>();
                ViewBag.ErrorMessage     = apiResponseModel.ResultStatusMessage;
                ViewBag.ErrorMessageList = apiResponseModel.ErrorMessageList;
                return(View(model));
            }
            return(View(model));
        }
コード例 #4
0
        public IActionResult GetAllPaginatedWithDetail([FromQuery] GetAllPaginatedRequestModel requestModel, [FromHeader] string displayLanguage)
        {
            var responseModel = new ApiResponseModel <PaginatedList <BroadcastWithDetail> > {
                DisplayLanguage = displayLanguage
            };

            try
            {
                var searchFilter = new BroadcastSearchFilter
                {
                    CurrentPage            = requestModel.CurrentPage ?? 1,
                    PageSize               = requestModel.PageSize ?? 10,
                    SortOn                 = requestModel.SortOn,
                    SortDirection          = requestModel.SortDirection,
                    Filter_BroadcastTypeId = requestModel.BroadcastTypeId,
                    Filter_TitleTR         = requestModel.TitleTR,
                    Filter_TitleEN         = requestModel.TitleEN,
                    Filter_IsActive        = requestModel.IsActive,
                };
                //tarihe göre filitreleme istenildiğinde formatlı şekilde tarih bilgisi alınması işlevi
                if (!string.IsNullOrEmpty(requestModel.ValidationEndDateTime))
                {
                    if (DateTime.TryParseExact(requestModel.ValidationEndDateTime, "yyyy-MM-dd", CultureInfo.InvariantCulture, DateTimeStyles.None, out var endDate))
                    {
                        searchFilter.Filter_ValidationEndDateTime = endDate;
                    }
                }

                responseModel.Data                = _broadcastService.GetAllPaginatedWithDetailBySearchFilter(searchFilter);
                responseModel.ResultStatusCode    = ResultStatusCodeStatic.Success;
                responseModel.ResultStatusMessage = "Success";
                return(Ok(responseModel));
            }
            catch (Exception ex)
            {
                responseModel.ResultStatusCode    = ResultStatusCodeStatic.Error;
                responseModel.ResultStatusMessage = ex.Message;
                responseModel.Data = null;
                return(StatusCode(StatusCodes.Status500InternalServerError, responseModel));
            }
        }
コード例 #5
0
        public PaginatedList <BroadcastWithDetail> GetAllPaginatedWithDetailBySearchFilter(BroadcastSearchFilter searchFilter)
        {
            PaginatedList <BroadcastWithDetail> resultList = new PaginatedList <BroadcastWithDetail>(new List <BroadcastWithDetail>(), 0, searchFilter.CurrentPage, searchFilter.PageSize, searchFilter.SortOn, searchFilter.SortDirection);

            using (AppDBContext dbContext = new AppDBContext(_config))
            {
                var query = from b in dbContext.Broadcast
                            from bt in dbContext.BroadcastType.Where(x => x.Id == b.BroadcastTypeId).DefaultIfEmpty()
                            select new BroadcastWithDetail()
                {
                    Id                    = b.Id,
                    TitleTR               = b.TitleTR,
                    TitleEN               = b.TitleEN,
                    DescriptionTR         = b.DescriptionTR,
                    DescriptionEN         = b.DescriptionEN,
                    ImageFilePath         = b.ImageFilePath,
                    VideoFileUrl          = b.VideoFileUrl,
                    ValidationEndDateTime = b.ValidationEndDateTime,
                    IsActive              = b.IsActive,
                    CreatedBy             = b.CreatedBy,
                    CreatedDateTime       = b.CreatedDateTime,
                    ModifiedBy            = b.ModifiedBy,
                    ModifiedDateTime      = b.ModifiedDateTime,
                    BroadcastTypeId       = b.BroadcastTypeId,
                    BroadcastType_NameTR  = bt == null ? String.Empty : bt.NameTR,
                    BroadcastType_NameEN  = bt == null ? String.Empty : bt.NameEN,
                };
                // filtering
                if (searchFilter.Filter_BroadcastTypeId.HasValue)
                {
                    query = query.Where(r => r.BroadcastTypeId == searchFilter.Filter_BroadcastTypeId.Value);
                }
                if (!string.IsNullOrEmpty(searchFilter.Filter_TitleTR))
                {
                    query = query.Where(r => r.TitleTR.Contains(searchFilter.Filter_TitleTR));
                }
                if (!string.IsNullOrEmpty(searchFilter.Filter_TitleEN))
                {
                    query = query.Where(r => r.TitleEN.Contains(searchFilter.Filter_TitleEN));
                }
                if (searchFilter.Filter_IsActive.HasValue)
                {
                    bool _isActive = searchFilter.Filter_IsActive.Value == 1 ? true : false;
                    query = query.Where(r => r.IsActive == _isActive);
                }
                if (searchFilter.Filter_ValidationEndDateTime.HasValue)
                {
                    query = query.Where(r => r.ValidationEndDateTime.Date == searchFilter.Filter_ValidationEndDateTime.Value.Date);
                }

                // asnotracking
                query = query.AsNoTracking();
                //total count
                var totalCount = query.Count();
                //sorting
                if (!string.IsNullOrEmpty(searchFilter.SortOn))
                {
                    // using System.Linq.Dynamic.Core; nuget paketi ve namespace eklenmelidir, dynamic order by yapmak icindir
                    query = query.OrderBy(searchFilter.SortOn + " " + searchFilter.SortDirection.ToUpper());
                }
                else
                {
                    // deefault sıralama vermek gerekiyor yoksa skip metodu hata veriyor ef 6'da -- 28.10.2019 15:40
                    // https://stackoverflow.com/questions/3437178/the-method-skip-is-only-supported-for-sorted-input-in-linq-to-entities
                    //query = query.OrderBy(r => r.BroadcastStatusId);
                    query = query.OrderByDescending(r => r.Id);
                }

                //paging
                query = query.Skip((searchFilter.CurrentPage - 1) * searchFilter.PageSize).Take(searchFilter.PageSize);

                resultList = new PaginatedList <BroadcastWithDetail>(
                    query.ToList(),
                    totalCount,
                    searchFilter.CurrentPage,
                    searchFilter.PageSize,
                    searchFilter.SortOn,
                    searchFilter.SortDirection
                    );
            }

            return(resultList);
        }
コード例 #6
0
        public ApiResponseModel <PaginatedList <BroadcastWithDetail> > GetAllPaginatedWithDetailBySearchFilter(string userToken, string displayLanguage, BroadcastSearchFilter searchFilter)
        {
            ApiResponseModel <PaginatedList <BroadcastWithDetail> > result = new ApiResponseModel <PaginatedList <BroadcastWithDetail> >()
            {
                Data = new PaginatedList <BroadcastWithDetail>(new List <BroadcastWithDetail>(), 0, searchFilter.CurrentPage, searchFilter.PageSize, searchFilter.SortOn, searchFilter.SortDirection)
            };

            //todo: portal api'den çekme işlemi olacak
            using (HttpClient httpClient = new HttpClient())
            {
                httpClient.BaseAddress = new Uri(ConfigHelper.ApiUrl);
                httpClient.DefaultRequestHeaders.Accept.Clear();
                httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", userToken);
                httpClient.DefaultRequestHeaders.Add("DisplayLanguage", displayLanguage);
                HttpResponseMessage response = httpClient.GetAsync(string.Format("v1/Broadcasts?CurrentPage={0}&PageSize={1}&SortOn={2}&SortDirection={3}&BroadcastTypeId={4}&TitleTR={5}&TitleEN={6}&IsActive={7}&ValidationEndDateTime={8}",
                                                                                 searchFilter.CurrentPage, searchFilter.PageSize, searchFilter.SortOn, searchFilter.SortDirection, searchFilter.Filter_BroadcastTypeId, searchFilter.Filter_TitleTR, searchFilter.Filter_TitleEN, searchFilter.Filter_IsActive, searchFilter.Filter_ValidationEndDateTimeAsString)).Result;

                result = response.Content.ReadAsJsonAsync <ApiResponseModel <PaginatedList <BroadcastWithDetail> > >().Result;
            }
            return(result);
        }