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));
        }
示例#2
0
        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));
        }
示例#3
0
        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));
            }
        }
示例#4
0
 public void SetYesterdayDate(SiteMVC.Models.Engine.AdvertismentsRequest request)
 {
     request.DateFrom = SystemUtils.Utils.Date.GetUkranianDateTimeNow().AddDays(-1).Date;
     request.DateTo   = SystemUtils.Utils.Date.GetUkranianDateTimeNow().Date;
 }