public PagedResponse <BrojKorisnikaLogs> GetAktivnosti([FromQuery] AktivnostiSearch obj)
        {
            var userEmail = usersService.GetRequestUserName(HttpContext.Request);

            aktivnostAutorizator.AuthorizeGet(userEmail);
            var respons = GetPagedResponse(obj);

            return(respons);
        }
        private PagedResponse <BrojKorisnikaLogs> GetPagedResponse(AktivnostiSearch obj)
        {
            var listaAktivnosti = aktivnostiService.Get(obj);
            PagedResponse <BrojKorisnikaLogs> respons = new PagedResponse <BrojKorisnikaLogs>();

            DateTime vrijeme = DateTime.Now.AddMonths(-(obj.Page - 1));

            respons.Stavke = listaAktivnosti
                             .Where(x => x.Datum.Year == vrijeme.Year &&
                                    x.Datum.Month == vrijeme.Month).OrderBy(x => x.Datum).ToList();

            int      brojac      = 1;
            DateTime zadnjiDatum = DateTime.Now;

            //O(n), i hash mapa bi isto O(n), isto kao i unutrasnja for petlja za preskakanje
            //treba mi unique kombinacija year month tj count njihov
            for (int i = 0; i < listaAktivnosti.Count; i++)
            {
                if (listaAktivnosti[i].Datum.Date.Year != zadnjiDatum.Date.Year ||
                    listaAktivnosti[i].Datum.Month != zadnjiDatum.Date.Month)
                {
                    zadnjiDatum = listaAktivnosti[i].Datum.Date;
                    brojac++;
                }
            }
            respons.TotalPageCount = brojac;

            AktivnostiSearch iducaKlon = obj.Clone() as AktivnostiSearch;

            iducaKlon.Page = (iducaKlon.Page + 1) > respons.TotalPageCount ? -1 : iducaKlon.Page + 1;
            String iduciUrl = iducaKlon.Page == -1 ? null : this.Url.Action("GetAktivnosti", "stranica", iducaKlon, Request.Scheme);

            AktivnostiSearch proslaKlon = obj.Clone() as AktivnostiSearch;

            proslaKlon.Page = (proslaKlon.Page - 1) < 0 ? -1 : proslaKlon.Page - 1;
            String prosliUrl = proslaKlon.Page == -1 ? null : this.Url.Action("GetAktivnosti", "stranica", proslaKlon, Request.Scheme);

            respons.IducaStranica  = !String.IsNullOrWhiteSpace(iduciUrl) ? new Uri(iduciUrl) : null;
            respons.ProslaStranica = !String.IsNullOrWhiteSpace(prosliUrl) ? new Uri(prosliUrl) : null;
            return(respons);
        }
Esempio n. 3
0
        public override List <BrojKorisnikaLogs> Get(AktivnostiSearch obj = null)
        {
            var dbRez = db.BrojKorisnikaLog.OrderByDescending(x => x.Datum).ToList();

            return(mapko.Map <List <BrojKorisnikaLogs> >(dbRez));
        }