public static void GetShowsShouldReturnProperCollection()
        {
            var mockProvider = new Mock <ITVMazeDataProvider>();
            var shows        = MockedShows();
            var members1     = MockedCastMembers(1);
            var members2     = MockedCastMembers(2);

            mockProvider.Setup(s => s.GetShows(0)).Returns(shows);
            mockProvider.Setup(s => s.GetCastMembers(1)).Returns(members1);
            mockProvider.Setup(s => s.GetCastMembers(2)).Returns(members2);

            var manager = new ShowManager(mockProvider.Object);

            var returnedShows = manager.GetShows(0);

            Assert.NotEmpty(returnedShows);

            var ageSortedProperly = false;

            foreach (var s in returnedShows)
            {
                var a1 = s.Cast[0];
                var a2 = s.Cast[1];

                ageSortedProperly = a2.Birthdate > a1.Birthdate;
                break;
            }

            Assert.True(ageSortedProperly);
        }
    private void DataBind()
    {
        PagedDataSource pdsShows = new PagedDataSource();

        pdsShows.DataSource = ShowManager.GetShowsBySql(Convert.ToInt32(Request.QueryString["movieId"]), DateTime.Now.ToShortDateString());
        dlShows.DataSource  = pdsShows;
        dlShows.DataBind();
    }
    protected void btnQueryDate_Click(object sender, EventArgs e)
    {
        PagedDataSource pdsShows = new PagedDataSource();

        pdsShows.DataSource = ShowManager.GetShowsBySql(Convert.ToInt32(Request.QueryString["movieId"]), Calendar1.SelectedDate.ToShortDateString());
        dlShows.DataSource  = pdsShows;
        dlShows.DataBind();
    }
    private void DataBind(int movieId)
    {
        PagedDataSource pdsShows = new PagedDataSource();

        pdsShows.DataSource = ShowManager.GetShowsBySql(movieId, DateTime.Now.ToShortDateString());
        dlShows.DataSource  = pdsShows;
        dlShows.DataBind();
    }
    protected void btnShowAdd_Click(object sender, EventArgs e)
    {
        int    id   = Convert.ToInt32(Request.QueryString["movieId"]);
        string date = lblDate.Text.Trim().ToString();
        string time = tbTime.Text.Trim().ToString();
        string hall = tbHall.Text.Trim().ToString();

        ShowManager.AddShow(id, date, time, hall);
        DataBind();
    }
    protected void btnRemove_Click(object sender, EventArgs e)
    {
        Button btn  = sender as Button;
        string date = btn.Attributes["date"].ToString().Substring(0, 10);
        string time = btn.Attributes["time"].ToString();
        int    id   = Convert.ToInt32(Request.QueryString["movieId"]);

        ShowManager.RemoveShowsByIdByDate(id, date, time);
        DataBind();
    }
Beispiel #7
0
        public ShowsManager(ISettings settings)
            : base(settings)
        {
            _seriesManager = new ShowManager();

            var tempCollectionShowModels = Storage.GetShowModel();

            if (tempCollectionShowModels != null)
            {
                _serieCollection = new SerieCollection();
                _serieCollection.Set(tempCollectionShowModels);
            }
        }
Beispiel #8
0
        public ActionResult Edit(int show_id)
        {
            //проверить относится ли show_id к текущему пользователю, кроме Admin
            string current_user = System.Web.HttpContext.Current.User.Identity.Name;

            if (UserManager.GetUserShows(current_user).Any(x => x.SHOW_ID == show_id) || IsAdmin)
            {
                var show = ShowManager.GetShow(show_id);
                return(View(show));
            }

            return(RedirectToAction("User", "Show", new { user_login = current_user }));
        }
        /// <summary>
        /// Пометить "модерация"
        /// </summary>
        public ActionResult SetMod(int show_id, bool value)
        {
            ShowManager.SetMod(show_id, value);
            if (value)
            {
                UtilManager.RegisterEvent(UserManager.GetUser(System.Web.HttpContext.Current.User.Identity.Name).USER_ID, AppEnums.Event.Пометить_заказ_как_модерируемый);
            }
            else
            {
                UtilManager.RegisterEvent(UserManager.GetUser(System.Web.HttpContext.Current.User.Identity.Name).USER_ID, AppEnums.Event.Пометить_заказ_как_немодерируемый);
            }

            return(new EmptyResult());
        }
        public static void GetShowsShouldPauzeWhen429Occurrs()
        {
            var mockProvider = new Mock <ITVMazeDataProvider>();
            var shows        = MockedShows();
            var members1     = MockedCastMembers(1);
            var members2     = MockedCastMembers(2);
            var count        = 0;

            mockProvider.Setup(s => s.GetShows(0)).Returns(shows);
            mockProvider.Setup(s => s.GetCastMembers(1)).Callback(() =>
            {
                count++;
                if (count == 1)
                {
                    throw new DataSourceOverloadException();
                }
            }).Returns(members1);
            mockProvider.Setup(s => s.GetCastMembers(2)).Returns(members2);

            var manager = new ShowManager(mockProvider.Object);

            var stopwatch = Stopwatch.StartNew();

            var returnedShows = manager.GetShows(0);

            var duration = stopwatch.ElapsedMilliseconds;

            Assert.NotEmpty(returnedShows);
            Assert.True(duration > 5000);

            var ageSortedProperly = false;

            foreach (var s in returnedShows)
            {
                var a1 = s.Cast[0];
                var a2 = s.Cast[1];

                ageSortedProperly = a2.Birthdate > a1.Birthdate;
                break;
            }

            Assert.True(ageSortedProperly);
        }
Beispiel #11
0
        public ActionResult Edit(Show show)
        {
            if (ModelState.IsValid)
            {
                //Если не Admin, то поле ALLOWMOD и PAID брать из базы
                if (!IsAdmin)
                {
                    Show sh = ShowManager.GetShow(show.SHOW_ID);
                    if (sh != null)
                    {
                        show.ALLOWMOD = sh.ALLOWMOD;
                        show.PAID     = sh.PAID;
                    }
                }

                SQLReturnResult res = ShowManager.SaveShow(show);
                switch (res.Result)
                {
                case AppEnums.SQLExecResult.Success:
                    UtilManager.RegisterEvent(UserManager.GetUser(System.Web.HttpContext.Current.User.Identity.Name).USER_ID,
                                              AppEnums.Event.Сохранить_параметры_заказа,
                                              string.Format("Сохранение параметров заказа № {0}", show.SHOW_ID));
                    //если заказ добавлял админ, то перенаправить в /Admin/UserShows, иначе /User/UserShows
                    if (IsAdmin)
                    {
                        AppUser user = UserManager.GetUser(show.USER_ID);
                        return(RedirectToAction("User", "Show", new { user_login = user.USER_LOGIN }));
                    }
                    TempData["result"] = "Операция прошла успешно!";
                    return(RedirectToAction("User", "Show"));

                case AppEnums.SQLExecResult.SyntaxError:
                    TempData["result"] = "При сохранении данных произошла ошибка!" + res.Message;
                    break;
                }
            }
            return(View(show));
        }
Beispiel #12
0
        public ActionResult Delete(int show_id)
        {
            SQLReturnResult res = ShowManager.DeleteShow(show_id);

            switch (res.Result)
            {
            case AppEnums.SQLExecResult.Success:
                //если заказ добавлял админ, то перенаправить в /Admin/UserShows, иначе /User/UserShows
                UtilManager.RegisterEvent(UserManager.GetUser(System.Web.HttpContext.Current.User.Identity.Name).USER_ID, AppEnums.Event.Удалить_заказ);
                if (IsAdmin)
                {
                    AppUser user = UserManager.GetUser(System.Web.HttpContext.Current.User.Identity.Name);
                    return(RedirectToAction("User", "Show", new { user_login = user.USER_LOGIN }));
                }
                TempData["result"] = "Заказ успешно удален!";
                break;

            case AppEnums.SQLExecResult.SyntaxError:
                TempData["result"] = "При удалении заказа произошла ошибка!" + res.Message;
                break;
            }

            return(RedirectToAction("User", "Show"));
        }
Beispiel #13
0
 private void Awake( )
 {
     instance = this;
 }
Beispiel #14
0
        /// <summary>
        /// Core logic to scrapping the API data to persistent local database
        /// </summary>
        private void ScrappingApiToDatabase()
        {
            if (!_isLocked)
            {
                try
                {
                    _isLocked = true;
                    var page = "?page=";

                    using (var context = new ApplicationContext())
                    {
                        var _castShowRepository = new ShowManager(context);

                        long pageNumber = 0;

                        // Always update our dataset on start of this Services or once a week if service is running.
                        if (lastUpdateExistingDataDataTime == null || (DateTime.Now - lastUpdateExistingDataDataTime).TotalDays > 7)
                        {
                            lastUpdateExistingDataDataTime = DateTime.Now;
                        }
                        else
                        {
                            var allShows = _castShowRepository.GetAll().ToList();
                            var maxShowId = allShows.Count > 0 ? allShows.Max(s => s.ShowId) : 1;
                            
                            // 250 row per page.
                            pageNumber = Convert.ToInt64(Math.Round(Convert.ToDouble(maxShowId / 250)));
                        }

                        var showPageContent = string.Empty;
                        do
                        {
                            long rangeToId = (pageNumber + 1) * _pageSize;
                            var localPageShowList = _castShowRepository.GetRange((rangeToId - _pageSize) + 1, rangeToId);

                            try
                            {
                                showPageContent = _httpWebRequestHandler.GetSourceTvMazeContent($"{RequestConstants.Url}{page}{(pageNumber).ToString()}");
                                if (!showPageContent.Equals(string.Empty) && !showPageContent.Equals("404"))
                                {
                                    JArray showJsonArray = JArray.Parse(showPageContent);

                                    var shows = new List<Show>();
                                    for (int i = 0; i < showJsonArray.Count; i++)
                                    {
                                        dynamic showSourceData = JObject.Parse(showJsonArray[i].ToString());
                                        var showId = (long)showSourceData.id;

                                        shows.Add(new Show()
                                        {
                                            ShowId = showId,
                                            Name = showSourceData.name,
                                            ShowCasts = GetShowCastDetailFromSource(showId)
                                        });
                                    }

                                    // Merge the show data to local persists storage.
                                    _castShowRepository.Merge(shows, localPageShowList.ToList());
                                    pageNumber++;
                                }
                            }
                            catch(WebException ex)
                            {
                                // 404: we have reached the end of the pages.  
                                if (ex.Message.Contains("404"))
                                {
                                    showPageContent = "404";
                                }
                                else
                                {
                                    // Wait a hour and try the page again.
                                    TimeSpan sleepTimeSpan = new TimeSpan(1, 0, 0);
                                    Thread.Sleep(sleepTimeSpan);
                                }
                            }

                        } 
                        while (!showPageContent.Equals("404")); 
                    }
                }
                finally
                {
                    _isLocked = false;
                }
            }
            else
            {
                // Skip this iteration because there is one still busy.
            }
        }
Beispiel #15
0
 void Start()
 {
     ItsShow = this;
 }