public ActionResult AdvertismentsList(SiteMVC.Models.Engine.AdvertismentsRequest request) { AdvertismentsList advertisments; if (!string.IsNullOrEmpty(Request["page"])) { int currentPage; if (!int.TryParse(Request["page"], out currentPage) || currentPage < 1) { currentPage = 1; } request.Offset = (currentPage - 1) * request.Limit; } var advertismentsLoader = new AdvertismentsLoader(); if (request.Date == null) { advertismentsLoader.SetTodayDate(request); advertisments = advertismentsLoader.LoadAdversitments(request); if (!advertismentsLoader.IsLoaded(advertisments)) { advertismentsLoader.SetYesterdayDate(request); advertisments = advertismentsLoader.LoadAdversitments(request); } } else { advertisments = advertismentsLoader.LoadAdversitments(request); } advertisments.Offset = request.Offset; advertisments.Limit = request.Limit; return(PartialView(advertisments)); }
public ActionResult Section(string sectionUrl, string subpurchaseMode, [System.Web.Http.FromUri] Models.Engine.AdvertismentsFilter advertismentsFilter) { string _sectionName; int _sectionID; int? _subSectionID; string _date = Request["date"]; #region Section switch switch (sectionUrl) { case "Sdam-kvartiru": _sectionName = "Сдам квартиру"; _sectionID = 1; _subSectionID = 1; break; case "Snimu-kvartiru": _sectionName = "Сниму квартиру"; _sectionID = 1; _subSectionID = 2; break; case "Prodam-kvartiru": _sectionName = "Продам квартиру"; _sectionID = 3; _subSectionID = 3; break; case "Kuplu-kvartiru": _sectionName = "Куплю квартиру"; _sectionID = 3; _subSectionID = 4; break; case "Obyavleniya-Doma-Dachi": _sectionName = "Дома, дачи"; _sectionID = 6; _subSectionID = null; break; case "Arenda-ofisov": _sectionName = "Аренда офисов"; _sectionID = 4; _subSectionID = null; break; case "Prodam-kommercheskuu-nedvijimost": _sectionName = "Продажа коммерческой недвижимости"; _sectionID = 5; _subSectionID = null; break; default: _sectionName = "Сдам квартиру"; _sectionID = 1; _subSectionID = 1; break; } #endregion Section switch var advertisments = new SiteMVC.Models.Engine.AdvertismentsRequest() { SectionId = _sectionID, SubSectionId = _subSectionID, SectionName = _sectionName, Date = _date }; advertisments.Filter = advertismentsFilter; return(View(advertisments)); }
public AdvertismentsList LoadAdversitments(SiteMVC.Models.Engine.AdvertismentsRequest request) { using (var txn = new TransactionScope( TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = IsolationLevel.ReadUncommitted } )) { IQueryable <viewAdvertisment> advertisments = LoadAdvertismentsByDate(request.DateFrom.Value, request.DateTo.Value); int fullCount = 0; int countToShow = 0; int countToShowAfterFilter = 0; if (advertisments != null) { advertisments = advertisments.Where(adv => adv.AdvertismentSection_Id == request.SectionId); if (request.SubSectionId != null) { advertisments = advertisments.Where(adv => adv.AdvertismentSubSection_Id == request.SubSectionId.Value); } if (!string.IsNullOrEmpty(request.City)) { advertisments = advertisments.Where(adv => adv.City == request.City); } else { //--- Null means Kharkiv city advertisments = advertisments.Where(adv => adv.City == null); } fullCount = advertisments.Count(); switch (request.State) { case State.JustParsed: advertisments = advertisments.Where( adv => adv.subpurchaseAdvertisment && adv.SubPurchase_Id == null ); break; case State.NotSubpurchase: advertisments = advertisments.Where( adv => !adv.subpurchaseAdvertisment ); break; case State.Subpurchase: advertisments = advertisments.Where( adv => adv.subpurchaseAdvertisment && adv.SubPurchase_Id != null ); break; case State.SubpurchaseWithNotSubpurchase: advertisments = advertisments.Where( adv => !adv.subpurchaseAdvertisment || adv.SubPurchase_Id != null ); break; } countToShow = advertisments.Count(); //--- special filters if (request.Filter != null) { ApplyFilters(request.Filter, ref advertisments); } countToShowAfterFilter = advertisments.Count(); advertisments = advertisments.Skip(request.Offset).Take(request.Limit); } DateTime lastTimeUpdated; if (advertisments != null && advertisments.Any()) { lastTimeUpdated = advertisments.Max(adv => adv.modifyDate); } else { lastTimeUpdated = DateTime.Now; } return(new AdvertismentsList(advertisments, fullCount, countToShow, countToShowAfterFilter, lastTimeUpdated)); } }
public void SetYesterdayDate(SiteMVC.Models.Engine.AdvertismentsRequest request) { request.DateFrom = SystemUtils.Utils.Date.GetUkranianDateTimeNow().AddDays(-1).Date; request.DateTo = SystemUtils.Utils.Date.GetUkranianDateTimeNow().Date; }