public void ShouldSearchBySpecificationWithCreator() { new DatabaseTester().Clean(); var creator1 = new Employee("1", "1", "1", "1"); var creator2 = new Employee("2", "2", "2", "2"); var order1 = new ExpenseReport(); order1.Submitter = creator1; order1.Number = "123"; var order2 = new ExpenseReport(); order2.Submitter = creator2; order2.Number = "456"; using (ISession session = DataContext.GetTransactedSession()) { session.SaveOrUpdate(creator1); session.SaveOrUpdate(creator2); session.SaveOrUpdate(order1); session.SaveOrUpdate(order2); session.Transaction.Commit(); } var specification = new ExpenseReportSpecificationQuery{Submitter = creator1}; IContainer container = DependencyRegistrarModule.EnsureDependenciesRegistered(); var bus = container.GetInstance<Bus>(); MultipleResult<ExpenseReport> result = bus.Send(specification); ExpenseReport[] reports = result.Results; Assert.That(reports.Length, Is.EqualTo(1)); Assert.That(reports[0].Id, Is.EqualTo(order1.Id)); }
public MultipleResult <ExpenseReport> Handle(ExpenseReportSpecificationQuery command) { var reports = _context.Set <ExpenseReport>() .Include(r => r.AuditEntries).ThenInclude(a => a.Employee) .Include(r => r.Submitter) .Include(r => r.Approver) .AsQueryable(); if (command.Approver != null) { reports = reports.Where(r => r.Approver == command.Approver); } if (command.Submitter != null) { reports = reports.Where(r => r.Submitter == command.Submitter); } if (command.Status != null) { reports = reports.Where(r => r.StatusCode == command.Status.Code); } IList <ExpenseReport> list = reports.ToList(); return(new MultipleResult <ExpenseReport> { Results = new List <ExpenseReport>(list).ToArray() }); }
public ActionResult Index(ExpenseReportSearchModel.SearchFilters filters) { var model = new ExpenseReportSearchModel(); if (filters != null) { model.Filters = filters; } var submitter = _bus.Send(new EmployeeByUserNameQuery(model.Filters.Submitter)).Result; var approver = _bus.Send(new EmployeeByUserNameQuery(model.Filters.Approver)).Result; var status = !string.IsNullOrWhiteSpace(model.Filters.Status) ? ExpenseReportStatus.FromKey(model.Filters.Status) : null; var specification = new ExpenseReportSpecificationQuery { Approver = approver, Submitter = submitter, Status = status }; ExpenseReport[] orders = _bus.Send(specification).Results; model.Results = orders; return(View(model)); }
public MultipleResult <ExpenseReport> Handle(ExpenseReportSpecificationQuery command) { using (ISession session = DataContext.GetTransactedSession()) { ICriteria criteria = session.CreateCriteria(typeof(ExpenseReport)); if (command.Approver != null) { criteria.Add(Restrictions.Eq("Approver", command.Approver)); } if (command.Submitter != null) { criteria.Add(Restrictions.Eq("Submitter", command.Submitter)); } if (command.Status != null) { criteria.Add(Restrictions.Eq("Status", command.Status)); } IList <ExpenseReport> list = criteria.List <ExpenseReport>(); return(new MultipleResult <ExpenseReport> { Results = new List <ExpenseReport>(list).ToArray() }); } }
public ActionResult Index() { var model = new ToDoModel(); Employee currentUser = _session.GetCurrentUser(); var submittedSpecification = new ExpenseReportSpecificationQuery { Approver = currentUser, Status = ExpenseReportStatus.Submitted }; ExpenseReport[] submitted = _bus.Send(submittedSpecification).Results; model.Submitted = submitted; var approvedSpecification = new ExpenseReportSpecificationQuery { Approver = currentUser, Status = ExpenseReportStatus.Approved }; ExpenseReport[] approved = _bus.Send(approvedSpecification).Results; model.Approved = approved; return(PartialView(model)); }
public void ShouldSearchBySpecificationWithFullSpecification() { new DatabaseTester().Clean(); var employee1 = new Employee("1", "1", "1", "1"); var employee2 = new Employee("2", "2", "2", "2"); var order1 = new ExpenseReport(); order1.Submitter = employee2; order1.Approver = employee1; order1.Number = "123"; order1.Status = ExpenseReportStatus.Submitted; var order2 = new ExpenseReport(); order2.Submitter = employee1; order2.Approver = employee2; order2.Number = "456"; order2.Status = ExpenseReportStatus.Draft; using (ISession session = DataContext.GetTransactedSession()) { session.SaveOrUpdate(employee1); session.SaveOrUpdate(employee2); session.SaveOrUpdate(order1); session.SaveOrUpdate(order2); session.Transaction.Commit(); } var specification = new ExpenseReportSpecificationQuery() { Submitter = employee2, Approver = employee1, Status = ExpenseReportStatus.Submitted }; IContainer container = DependencyRegistrarModule.EnsureDependenciesRegistered(); var bus = container.GetInstance <Bus>(); MultipleResult <ExpenseReport> result = bus.Send(specification); ExpenseReport[] reports = result.Results; Assert.That(reports.Length, Is.EqualTo(1)); Assert.That(reports[0].Id, Is.EqualTo(order1.Id)); }
public HttpResponseMessage Get(string approverName, string submitterName, string statusCode) { var submitter = _bus.Send(new EmployeeByUserNameQuery(submitterName)).Result; var approver = _bus.Send(new EmployeeByUserNameQuery(approverName)).Result; var status = !string.IsNullOrWhiteSpace(statusCode) ? ExpenseReportStatus.FromKey(statusCode) : null; var specification = new ExpenseReportSpecificationQuery { Approver = approver, Submitter = submitter, Status = status }; ExpenseReport[] orders = _bus.Send(specification).Results; var responseMessage = Request.CreateResponse(HttpStatusCode.OK, orders); return(responseMessage); }
public void ShouldSearchBySpecificationWithStatus() { new DatabaseTester().Clean(); var employee1 = new Employee("1", "1", "1", "1"); var employee2 = new Employee("2", "2", "2", "2"); var order1 = new ExpenseReport(); order1.Submitter = employee2; order1.Approver = employee1; order1.Number = "123"; order1.Status = ExpenseReportStatus.Submitted; var order2 = new ExpenseReport(); order2.Submitter = employee1; order2.Approver = employee2; order2.Number = "456"; order2.Status = ExpenseReportStatus.Draft; using (EfCoreContext dbContext = new StubbedDataContextFactory().GetContext()) { dbContext.Add(employee1); dbContext.Add(employee2); dbContext.Add(order1); dbContext.Add(order2); dbContext.SaveChanges(); } var specification = new ExpenseReportSpecificationQuery() { Status = ExpenseReportStatus.Submitted }; IContainer container = DependencyRegistrarModule.EnsureDependenciesRegistered(); var bus = container.GetInstance <Bus>(); MultipleResult <ExpenseReport> result = bus.Send(specification); ExpenseReport[] reports = result.Results; Assert.That(reports.Length, Is.EqualTo(1)); Assert.That(reports[0].Id, Is.EqualTo(order1.Id)); }
public ActionResult Index() { var model = new ToDoModel(); Employee currentUser = _session.GetCurrentUser(); var submittedSpecification = new ExpenseReportSpecificationQuery { Approver = currentUser, Status = ExpenseReportStatus.Submitted }; ExpenseReport[] submitted = _bus.Send(submittedSpecification).Results; model.Submitted = submitted; var approvedSpecification = new ExpenseReportSpecificationQuery { Approver = currentUser, Status = ExpenseReportStatus.Approved }; ExpenseReport[] approved = _bus.Send(approvedSpecification).Results; model.Approved = approved; return PartialView(model); }
public ActionResult Index(ExpenseReportSearchModel.SearchFilters filters) { var model = new ExpenseReportSearchModel(); if (filters != null) model.Filters = filters; var submitter = _bus.Send(new EmployeeByUserNameQuery(model.Filters.Submitter)).Result; var approver = _bus.Send(new EmployeeByUserNameQuery(model.Filters.Approver)).Result; var status = !string.IsNullOrWhiteSpace(model.Filters.Status) ? ExpenseReportStatus.FromKey(model.Filters.Status) : null; var specification = new ExpenseReportSpecificationQuery { Approver = approver, Submitter = submitter, Status = status }; ExpenseReport[] orders = _bus.Send(specification).Results; model.Results = orders; return View(model); }
public void ShouldEagerFetchAssociations() { new DatabaseTester().Clean(); var employee1 = new Employee("1", "1", "1", "1"); var employee2 = new Employee("2", "2", "2", "2"); var report = new ExpenseReport(); report.Submitter = employee1; report.Approver = employee1; report.Number = "123"; report.ChangeStatus(employee2, DateTime.Now, ExpenseReportStatus.Draft, ExpenseReportStatus.Submitted);; using (EfCoreContext dbContext = new StubbedDataContextFactory().GetContext()) { dbContext.Add(employee1); dbContext.Add(report); dbContext.SaveChanges(); } var specification = new ExpenseReportSpecificationQuery() { Status = ExpenseReportStatus.Submitted }; IContainer container = DependencyRegistrarModule.EnsureDependenciesRegistered(); var bus = container.GetInstance <Bus>(); MultipleResult <ExpenseReport> result = bus.Send(specification); ExpenseReport[] reports = result.Results; Assert.That(reports.Length, Is.EqualTo(1)); Assert.That(reports[0].Id, Is.EqualTo(report.Id)); reports[0].Submitter.ShouldEqual(employee1); reports[0].Approver.ShouldEqual(employee1); reports[0].AuditEntries.ToArray()[0].Employee.ShouldEqual(employee2); }