Пример #1
0
        public IEnumerable <ReportTypeAElement> GenerateReportA(DateTime from, DateTime until, string email)
        {
            List <ReportTypeAElement> report              = new List <ReportTypeAElement>();
            List <Status>             differentStatus     = new List <Status>();
            List <Request>            requestsByCondition = (List <Request>)requestRepository.GetAllByCondition(r => r.CreationDate >= from && r.CreationDate <= until && r.Email.Equals(email)).ToList();

            if (requestsByCondition.Count != 0)
            {
                foreach (Request r in requestsByCondition)
                {
                    if (!differentStatus.Contains(r.Status))
                    {
                        differentStatus.Add(r.Status);
                        ReportTypeAElement newReportElement = new ReportTypeAElement();
                        newReportElement.Amount = 1;
                        newReportElement.Status = r.Status;
                        newReportElement.RequestNumbers.Add(r.RequestNumber);
                        report.Add(newReportElement);
                    }
                    else
                    {
                        foreach (ReportTypeAElement rAElement in report)
                        {
                            if (rAElement.Status.Equals(r.Status))
                            {
                                rAElement.Amount++;
                                rAElement.RequestNumbers.Add(r.RequestNumber);
                                break;
                            }
                        }
                    }
                }
            }
            return(report);
        }
Пример #2
0
        public void GenerateReportTypeA()
        {
            Request req1 = new Request()
            {
                RequestNumber = 1,
                CreationDate  = DateTime.Now,
                Email         = "*****@*****.**",
                Status        = Status.Creada
            };
            Request req2 = new Request()
            {
                CreationDate  = DateTime.Now.AddDays(1),
                Email         = "*****@*****.**",
                RequestNumber = 2,
                Status        = Status.Creada
            };
            Request req3 = new Request()
            {
                CreationDate  = DateTime.Now.AddDays(-1),
                Email         = "*****@*****.**",
                RequestNumber = 3,
                Status        = Status.Aceptada
            };

            ReportTypeAElement repAElem1 = new ReportTypeAElement()
            {
                Amount         = 2,
                Status         = Status.Creada,
                RequestNumbers = new List <int>()
            };

            repAElem1.RequestNumbers.Add(req1.RequestNumber);
            repAElem1.RequestNumbers.Add(req2.RequestNumber);

            ReportTypeAElement repAElem2 = new ReportTypeAElement()
            {
                Amount         = 1,
                Status         = Status.Aceptada,
                RequestNumbers = new List <int>()
            };

            repAElem2.RequestNumbers.Add(req3.RequestNumber);

            List <Request> requests = new List <Request>();

            requests.Add(req1);
            requests.Add(req2);
            requests.Add(req3);

            List <ReportTypeAElement> report = new List <ReportTypeAElement>();

            report.Add(repAElem1);
            report.Add(repAElem2);

            var reqRepoMock   = new Mock <IRequestRepository>(MockBehavior.Strict);
            var adminRepoMock = new Mock <IRepository <Admin> >(MockBehavior.Strict);

            reqRepoMock.Setup(m => m.GetAllByCondition(It.IsAny <Expression <Func <Request, bool> > >())).Returns(requests);

            var adminLogic = new AdminLogic(adminRepoMock.Object, reqRepoMock.Object);

            List <ReportTypeAElement> reportGenerated = (List <ReportTypeAElement>)adminLogic.GenerateReportA(DateTime.Now.AddDays(-1), DateTime.Now.AddDays(+1), "*****@*****.**");

            reqRepoMock.VerifyAll();

            Assert.IsTrue(report.SequenceEqual(reportGenerated));
        }