public async Task <IActionResult> Get([FromQuery] CostsFilterOptions queryParams)
        {
            try
            {
                Token token = (Token)this.HttpContext.Items["Token"];
                logger.Info("New request from userId: " + token.data.user.id + " arrived to obtain Costs for his Organization");
                if (!queryParams.HasOptions())
                {
                    logger.Error("Missing required query paramteters on url");
                    throw new ArgumentException("Missing required query parameters");
                }

                logger.Debug("Querying service for a report from: " +
                             queryParams.From.ToShortDateString() + " To: " + queryParams.To.ToShortDateString() +
                             " for organizationId: " + token.data.organizationId);
                List <MonthCost> result = this.costService.GetCosts(
                    queryParams.From,
                    queryParams.To,
                    token.data.organizationId
                    );
                return(Ok(result));
            }
            catch (ArgumentException exception)
            {
                return(BadRequest(exception.Message));
            }
            catch (Exception e) {
                return(BadRequest(e.Message));
            }
        }
        public async Task GetCostsTest()
        {
            DateTime from = new DateTime(2020, 1, 1);
            DateTime to   = new DateTime(2020, 12, 1);

            List <MonthCost> returnedList = new List <MonthCost>();

            PeriodCost periodMonth2 = new PeriodCost()
            {
                month = 2,
                year  = 2020
            };
            Cost bugsCostMonth2 = new Cost()
            {
                cant     = 100,
                unitCost = 2,
            };
            Cost usersCostMonth2 = new Cost()
            {
                cant     = 13,
                unitCost = 5,
            };
            PeriodCost periodMonth5 = new PeriodCost()
            {
                month = 5,
                year  = 2020
            };
            Cost bugsCostMonth5 = new Cost()
            {
                cant     = 167,
                unitCost = 4,
            };
            Cost usersCostMonth5 = new Cost()
            {
                cant     = 7,
                unitCost = 6,
            };

            MonthCost monthCost2 = new MonthCost()
            {
                id     = 1,
                bugs   = bugsCostMonth2,
                users  = usersCostMonth2,
                period = periodMonth2
            };
            MonthCost monthCost5 = new MonthCost()
            {
                id     = 2,
                bugs   = bugsCostMonth5,
                users  = usersCostMonth5,
                period = periodMonth5
            };

            returnedList.Add(monthCost2);
            returnedList.Add(monthCost5);

            var mockCostService = new Mock <ICostsService>();

            mockCostService.Setup(m => m.GetCosts(from, to, 1)).Returns(returnedList);

            var controller = new CostsController(
                mockCostService.Object,
                (new Mock <ILoggerManager>()).Object,
                (new Mock <IPingService>()).Object);

            controller.ControllerContext             = new ControllerContext();
            controller.ControllerContext.HttpContext = new DefaultHttpContext();

            User usr = new User()
            {
                id = 1, organizationId = 1
            };
            TokenContent tokenCont = new TokenContent()
            {
                user = usr, organizationId = 1
            };
            Token token = new Token()
            {
                exp = 10000, iat = 10000, data = tokenCont
            };

            controller.ControllerContext.HttpContext.Items["Token"] = token;

            var queryParam = new CostsFilterOptions()
            {
                From = from, To = to
            };

            var result = await controller.Get(queryParam);

            var okResult = result as OkObjectResult;

            List <MonthCost> model = okResult.Value as List <MonthCost>;

            mockCostService.VerifyAll();

            Assert.AreEqual(200, okResult.StatusCode);
            Assert.IsFalse(model == null);
            Assert.AreEqual(model.Count, 2);
        }