public void ShouldExecuteDraftTransition() { new DatabaseTester().Clean(); var report = new ExpenseReport(); report.Number = "123"; report.Status = ExpenseReportStatus.Draft; var employee = new Employee("jpalermo", "Jeffrey", "Palermo", "jeffrey @ clear dash measure.com"); report.Submitter = employee; report.Approver = employee; using (ISession session = DataContext.GetTransactedSession()) { session.SaveOrUpdate(employee); session.SaveOrUpdate(report); session.Transaction.Commit(); } var command = new ExecuteTransitionCommand(report, "Save", employee, new DateTime(2001, 1, 1)); IContainer container = DependencyRegistrarModule.EnsureDependenciesRegistered(); var bus = container.GetInstance <Bus>(); ExecuteTransitionResult result = bus.Send(command); result.NewStatus.ShouldEqual("Drafting"); }
public bool IsValid(ExecuteTransitionCommand transitionCommand) { bool beginStatusMatches = transitionCommand.Report.Status.Equals(GetBeginStatus()); bool currentUserIsCorrectRole = userCanExecute(transitionCommand.CurrentUser, transitionCommand.Report); return(beginStatusMatches && currentUserIsCorrectRole); }
private static void RunToDraft(string number, Employee employee, int total, DateTime startingDate, params string[] commandsToRun) { var report = new ExpenseReport(); report.Number = number; report.Status = ExpenseReportStatus.Draft; report.Submitter = employee; report.Approver = employee; report.Total = total; using (ISession session = DataContext.GetTransactedSession()) { session.SaveOrUpdate(report); session.Transaction.Commit(); } IContainer container = DependencyRegistrarModule.EnsureDependenciesRegistered(); var bus = container.GetInstance <Bus>(); for (int j = 0; j < commandsToRun.Length; j++) { DateTime timestamp = startingDate.AddSeconds(j); var command = new ExecuteTransitionCommand(report, commandsToRun[j], employee, timestamp); bus.Send(command); } }
private static void RunToDraft(string number, Employee employee, int total, DateTime startingDate, params string[] commandsToRun) { var report = new ExpenseReport(); report.Number = number; report.Status = ExpenseReportStatus.Draft; report.Submitter = employee; report.Approver = employee; report.Total = total; using (ISession session = DataContext.GetTransactedSession()) { session.SaveOrUpdate(report); session.Transaction.Commit(); } IContainer container = DependencyRegistrarModule.EnsureDependenciesRegistered(); var bus = container.GetInstance<Bus>(); for (int j = 0; j < commandsToRun.Length; j++) { DateTime timestamp = startingDate.AddSeconds(j); var command = new ExecuteTransitionCommand(report, commandsToRun[j], employee, timestamp); bus.Send(command); } }
private static void RunToDraft(string number, Employee employee, int total, DateTime startingDate, params string[] commandsToRun) { var report = new ExpenseReport(); report.Number = number; report.Status = ExpenseReportStatus.Draft; report.Submitter = employee; report.Approver = employee; report.Total = total; var container = DependencyRegistrarModule.EnsureDependenciesRegistered(); var context = container.GetInstance <EfCoreContext>(); context.Update(report); context.SaveChanges(); var bus = container.GetInstance <Bus>(); for (var j = 0; j < commandsToRun.Length; j++) { var timestamp = startingDate.AddSeconds(j); var command = new ExecuteTransitionCommand(report, commandsToRun[j], employee, timestamp); bus.Send(command); } }
public void ShouldExecuteDraftTransition() { new DatabaseTester().Clean(); var report = new ExpenseReport(); report.Number = "123"; report.Status = ExpenseReportStatus.Draft; var employee = new Employee("jpalermo", "Jeffrey", "Palermo", "jeffrey @ clear dash measure.com"); report.Submitter = employee; report.Approver = employee; using (ISession session = DataContext.GetTransactedSession()) { session.SaveOrUpdate(employee); session.SaveOrUpdate(report); session.Transaction.Commit(); } var command = new ExecuteTransitionCommand(report, "Save", employee, new DateTime(2001, 1, 1)); IContainer container = DependencyRegistrarModule.EnsureDependenciesRegistered(); var bus = container.GetInstance<Bus>(); ExecuteTransitionResult result = bus.Send(command); result.NewStatus.ShouldEqual("Drafting"); }
public IStateCommand[] GetValidStateCommands(ExecuteTransitionCommand transitionCommand) { var commands = new List<IStateCommand>( GetAllStateCommands()); commands.RemoveAll(delegate(IStateCommand obj) { return !obj.IsValid(transitionCommand); }); return commands.ToArray(); }
protected override void preExecute(ExecuteTransitionCommand transitionCommand) { transitionCommand.Report.LastSubmitted = transitionCommand.CurrentDate; if (transitionCommand.Report.FirstSubmitted == null) { transitionCommand.Report.FirstSubmitted = transitionCommand.CurrentDate; } }
public IStateCommand[] GetValidStateCommands(ExecuteTransitionCommand transitionCommand) { var commands = new List <IStateCommand>( GetAllStateCommands()); commands.RemoveAll(delegate(IStateCommand obj) { return(!obj.IsValid(transitionCommand)); }); return(commands.ToArray()); }
public ExecuteTransitionResult Execute(ExecuteTransitionCommand transitionCommand) { preExecute(transitionCommand); string currentUserFullName = transitionCommand.CurrentUser.GetFullName(); transitionCommand.Report.ChangeStatus(transitionCommand.CurrentUser, transitionCommand.CurrentDate, GetBeginStatus(), GetEndStatus()); string loweredTransitionVerb = TransitionVerbPastTense.ToLower(); string reportNumber = transitionCommand.Report.Number; string message = string.Format("You have {0} expense report {1}", loweredTransitionVerb, reportNumber); string debugMessage = string.Format("{0} has {1} expense report {2}", currentUserFullName, loweredTransitionVerb, reportNumber); return new ExecuteTransitionResult {NewStatus = GetEndStatus().FriendlyName , NextStep = NextStep.Edit, Action = debugMessage, Message = message }; }
public ActionResult Manage(ExpenseReportManageModel model, string command) { Employee currentUser = _session.GetCurrentUser(); ExpenseReport expenseReport; if (model.Mode == EditMode.New) { expenseReport = _expenseReportBuilder.Build(currentUser); } else { expenseReport = _bus.Send(new ExpenseReportByNumberQuery { ExpenseReportNumber = model.ExpenseReportNumber }).Result; } if (!ModelState.IsValid) { ViewBag.ExpenseReport = expenseReport; ViewBag.CurrentUser = currentUser; return(View("Manage", model)); } Employee approver = _bus.Send(new EmployeeByUserNameQuery(model.ApproverUserName)).Result; Employee submitter = _bus.Send(new EmployeeByUserNameQuery(model.SubmitterUserName)).Result; expenseReport.Number = model.ExpenseReportNumber; expenseReport.Submitter = submitter; expenseReport.Approver = approver; expenseReport.Title = model.Title; expenseReport.Description = model.Description; expenseReport.Total = model.Total; var transitionCommand = new ExecuteTransitionCommand(expenseReport, command, currentUser, _calendar.GetCurrentTime()); ExecuteTransitionResult transitionResult = _bus.Send(transitionCommand); if (transitionResult.NextStep == NextStep.Dashboard) { return(Redirect("~/Home")); } return(RedirectToAction("Manage", new { id = expenseReport.Number, mode = "edit" })); }
public ExecuteTransitionResult Execute(ExecuteTransitionCommand transitionCommand) { preExecute(transitionCommand); string currentUserFullName = transitionCommand.CurrentUser.GetFullName(); transitionCommand.Report.ChangeStatus(transitionCommand.CurrentUser, transitionCommand.CurrentDate, GetBeginStatus(), GetEndStatus()); string loweredTransitionVerb = TransitionVerbPastTense.ToLower(); string reportNumber = transitionCommand.Report.Number; string message = string.Format("You have {0} work order {1}", loweredTransitionVerb, reportNumber); string debugMessage = string.Format("{0} has {1} work order {2}", currentUserFullName, loweredTransitionVerb, reportNumber); return(new ExecuteTransitionResult { NewStatus = GetEndStatus().FriendlyName , NextStep = NextStep.Edit, Action = debugMessage, Message = message }); }
protected override void preExecute(ExecuteTransitionCommand transitionCommand) { base.preExecute(transitionCommand); transitionCommand.Report.LastDeclined = transitionCommand.CurrentDate; }
protected override void preExecute(ExecuteTransitionCommand transitionCommand) { transitionCommand.Report.LastCancelled = transitionCommand.Report.LastWithdrawn = transitionCommand.CurrentDate; }
protected virtual void preExecute(ExecuteTransitionCommand transitionCommand) { }
protected override void preExecute(ExecuteTransitionCommand transitionCommand) { transitionCommand.Report.LastApproved = transitionCommand.CurrentDate; }
public bool IsValid(ExecuteTransitionCommand transitionCommand) { return _isValid; }
public ExecuteTransitionResult Execute(ExecuteTransitionCommand transitionCommand) { throw new NotImplementedException(); }
public bool IsValid(ExecuteTransitionCommand transitionCommand) { bool beginStatusMatches = transitionCommand.Report.Status.Equals(GetBeginStatus()); bool currentUserIsCorrectRole = userCanExecute(transitionCommand.CurrentUser, transitionCommand.Report); return beginStatusMatches && currentUserIsCorrectRole; }
public ActionResult Manage(ExpenseReportManageModel model, string command) { Employee currentUser = _session.GetCurrentUser(); ExpenseReport expenseReport; if (model.Mode == EditMode.New) expenseReport = _expenseReportBuilder.Build(currentUser); else expenseReport = _bus.Send(new ExpenseReportByNumberQuery { ExpenseReportNumber = model.ExpenseReportNumber }).Result; if (!ModelState.IsValid) { ViewBag.ExpenseReport = expenseReport; ViewBag.CurrentUser = currentUser; return View("Manage", model); } Employee approver = _bus.Send(new EmployeeByUserNameQuery(model.ApproverUserName)).Result; Employee submitter = _bus.Send(new EmployeeByUserNameQuery(model.SubmitterUserName)).Result; expenseReport.Number = model.ExpenseReportNumber; expenseReport.Submitter = submitter; expenseReport.Approver = approver; expenseReport.Title = model.Title; expenseReport.Description = model.Description; expenseReport.Total = model.Total; var transitionCommand = new ExecuteTransitionCommand(expenseReport, command, currentUser, _calendar.GetCurrentTime()); ExecuteTransitionResult transitionResult = _bus.Send(transitionCommand); if (transitionResult.NextStep == NextStep.Dashboard) return Redirect("~/Home"); return RedirectToAction("Manage", new {id = expenseReport.Number, mode = "edit"}); }
public bool IsValid(ExecuteTransitionCommand transitionCommand) { return(_isValid); }