public ExpenseReportFact(ExpenseReport expenseReport, DateTime timeStamp) { ExpenseReportId = expenseReport.Id; Number = expenseReport.Number; Status = expenseReport.Status.FriendlyName; Submitter = expenseReport.Submitter.GetFullName(); if(Approver != null) Approver = expenseReport.Approver.GetFullName(); TimeStamp = timeStamp; Total = expenseReport.Total; }
private static void Main() { var report = new ExpenseReport(); report.AddExpense(new Expense(ExpenseType.Breakfast, 525)); report.AddExpense(new Expense(ExpenseType.Breakfast, 400)); report.AddExpense(new Expense(ExpenseType.Breakfast, 500)); report.AddExpense(new Expense(ExpenseType.Breakfast, 1050)); report.AddExpense(new Expense(ExpenseType.CarRental, 5600)); report.AddExpense(new Expense(ExpenseType.Dinner, 4800)); report.AddExpense(new Expense(ExpenseType.Dinner, 5400)); report.PrintReport(new ConsoleReportPrinter()); }
public void ShouldSave() { new DatabaseTester().Clean(); var creator = new Employee("1", "1", "1", "1"); var assignee = new Employee("2", "2", "2", "2"); var order = new ExpenseReport(); order.Submitter = creator; order.Approver = assignee; order.Title = "foo"; order.Description = "bar"; order.ChangeStatus(ExpenseReportStatus.Approved); order.Number = "123"; ISession session = DataContext.GetTransactedSession(); session.SaveOrUpdate(creator); session.SaveOrUpdate(assignee); session.Transaction.Commit(); var repository = new ExpenseReportRepository(); repository.Save(order); session.Dispose(); ISession session2 = DataContext.GetTransactedSession(); var rehydratedReport = session2.Load <ExpenseReport>(order.Id); Assert.That(rehydratedReport.Id, Is.EqualTo(order.Id)); Assert.That(rehydratedReport.Submitter.Id, Is.EqualTo(order.Submitter.Id)); Assert.That(rehydratedReport.Approver.Id, Is.EqualTo(order.Approver.Id)); Assert.That(rehydratedReport.Title, Is.EqualTo(order.Title)); Assert.That(rehydratedReport.Description, Is.EqualTo(order.Description)); Assert.That(rehydratedReport.Status, Is.EqualTo(order.Status)); rehydratedReport.Number.ShouldEqual(order.Number); }
protected override void Seed(MobileServiceContext context) { var expense = new ExpenseModel { Name = "Flight", }; var expenseReport = new ExpenseReport { Approver = "Ian Leathurbyury", ReportName = "FY17 LATAM trip", ReportOwner = "Michael Watson", Status = "InProgress", }; expenseReport.Expenses.Add(expense); context.ExpenseReports.Add(expenseReport); context.SaveChanges(); base.Seed(context); }
private ExpenseReport GetReport(ExpenseModel data) { var report = new ExpenseReport(); var dataTable = GetDataTable(); var dataSet = new System.Data.DataSet(); dataSet.Tables.Add(dataTable); for (int i = 0; i < data.ExpenseItems.Count; i++) { DataRow row = dataSet.Tables["ExpenseItem"].NewRow(); row["No"] = i + 1; row["Name"] = data.ExpenseItems[i].Name; row["Income"] = data.ExpenseItems[i].Type == 0 ? data.ExpenseItems[i].Money : 0; row["Expense"] = data.ExpenseItems[i].Type == 1 ? data.ExpenseItems[i].Money : 0; dataSet.Tables["ExpenseItem"].Rows.Add(row); } report.SetDataSource(dataSet); report.SetParameterValue("FullName", data.FullName); report.SetParameterValue("Date", data.Date); return(report); }
public void ShouldResolveAndExecuteAHandler() { new DatabaseTester().Clean(); var report = new ExpenseReport { Title = "TestExpens", Description = "This is an ", Number = "123", Status = ExpenseReportStatus.Cancelled }; using (var context = new StubbedDataContextFactory().GetContext()) { context.AddRange(report); context.SaveChanges(); } var container = new DatabaseTester().GetContainer(); var bus = container.GetInstance <Bus>(); var reports = bus.Send(new ListExpenseReportsCommand());; reports.Length.ShouldBe(1); }
public void ClearExpenseLines(ExpenseReport er) { List <ExpenseLine> ELs = new List <ExpenseLine>(); // Remove EL from list (iterate backward to be safe) for (int i = er.ExpenseLines.Count - 1; i >= 0; i--) { ELs.Add(er.ExpenseLines[i]); er.RemoveLine(er.ExpenseLines[i]); } // Destroy all ELs for (int i = ELs.Count - 1; i >= 0; i--) { ExpenseLine toRemove = ELs[i]; //ExpenseLine toRemove = Db.ExpenseLines.SingleOrDefault(el => el.Id == ELs[i].Id); if (toRemove != null) { Db.ExpenseLines.Remove(toRemove); } } Db.SaveChanges(); }
public void ShouldPersistExportReportFact() { new DatabaseTester().Clean(); var employee = new Employee("somethingelse", "Jeffrey", "Palermo", "jeffrey @ clear dash measure.com"); employee.Id = Guid.NewGuid(); var report = new ExpenseReport { Number = "123", Status = ExpenseReportStatus.Draft, Submitter = employee }; DateTime setDate = new DateTime(2015, 1, 1); ExpenseReportFact expenseReportFact = new ExpenseReportFact(report, setDate); var command = new AddExpenseReportFactCommand(expenseReportFact); IContainer container = DependencyRegistrarModule.EnsureDependenciesRegistered(); var bus = container.GetInstance <Bus>(); bus.Send(command); ExpenseReportFact reHydratedExpenseReportFact; using (EfCoreContext session = new StubbedDataContextFactory().GetContext()) { reHydratedExpenseReportFact = session.Find <ExpenseReportFact>(expenseReportFact.Id); } reHydratedExpenseReportFact.Approver.ShouldEqual(expenseReportFact.Approver); reHydratedExpenseReportFact.Number.ShouldEqual(expenseReportFact.Number); reHydratedExpenseReportFact.Status.ShouldEqual(expenseReportFact.Status); reHydratedExpenseReportFact.Submitter.ShouldEqual(expenseReportFact.Submitter); reHydratedExpenseReportFact.TimeStamp.ShouldEqual(expenseReportFact.TimeStamp); reHydratedExpenseReportFact.Total.ShouldEqual(expenseReportFact.Total); }
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 (EfCoreContext dbContext = new StubbedDataContextFactory().GetContext()) { dbContext.Add(creator1); dbContext.Add(creator2); dbContext.Add(order1); dbContext.Add(order2); dbContext.SaveChanges(); } 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 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); }
public void ShouldAddFact() { new DatabaseTester().Clean(); var creator = new Employee("1", "1", "1", "1"); var assignee = new Employee("2", "2", "2", "2"); var expenseReport = new ExpenseReport { Submitter = creator, Approver = assignee, Title = "foo", Description = "bar", Number = "123" }; expenseReport.ChangeStatus(ExpenseReportStatus.Approved); ExpenseReportFact expenseReportFact = new ExpenseReportFact(expenseReport, new DateTime(2012, 1, 1)); using (EfCoreContext context = new StubbedDataContextFactory().GetContext()) { context.Add(expenseReportFact); context.SaveChanges(); } using (EfCoreContext context = new StubbedDataContextFactory().GetContext()) { var reportFact = context.Find <ExpenseReportFact>(expenseReportFact.Id); reportFact.Total.ShouldEqual(expenseReportFact.Total); reportFact.TimeStamp.ShouldEqual(expenseReportFact.TimeStamp); reportFact.Number.ShouldEqual(expenseReportFact.Number); reportFact.Status.ShouldEqual(expenseReportFact.Status); reportFact.Submitter.ShouldEqual(expenseReportFact.Submitter); reportFact.Approver.ShouldEqual(expenseReportFact.Approver); } }
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; ISession session = DataContext.GetTransactedSession(); session.SaveOrUpdate(employee1); session.SaveOrUpdate(employee2); session.SaveOrUpdate(order1); session.SaveOrUpdate(order2); session.Transaction.Commit(); session.Dispose(); var repository = new ExpenseReportRepository(); var specification = new SearchSpecification(); specification.MatchStatus(ExpenseReportStatus.Submitted); ExpenseReport[] orders = repository.GetMany(specification); Assert.That(orders.Length, Is.EqualTo(1)); Assert.That(orders[0].Id, Is.EqualTo(order1.Id)); }
public void ShouldAddFact() { new DatabaseTester().Clean(); var creator = new Employee("1", "1", "1", "1"); var assignee = new Employee("2", "2", "2", "2"); var expenseReport = new ExpenseReport { Submitter = creator, Approver = assignee, Title = "foo", Description = "bar", Number = "123" }; expenseReport.ChangeStatus(ExpenseReportStatus.Approved); ExpenseReportFact expenseReportFact = new ExpenseReportFact(expenseReport, new DateTime(2012, 1, 1)); using (ISession session = DataContext.GetTransactedSession()) { //session.SaveOrUpdate(expenseReport); session.SaveOrUpdate(expenseReportFact); session.Transaction.Commit(); } using (ISession session = DataContext.GetTransactedSession()) { var reportFact = session.Load <ExpenseReportFact>(expenseReportFact.Id); reportFact.Total.ShouldEqual(expenseReportFact.Total); reportFact.TimeStamp.ShouldEqual(expenseReportFact.TimeStamp); reportFact.Number.ShouldEqual(expenseReportFact.Number); reportFact.Status.ShouldEqual(expenseReportFact.Status); reportFact.Submitter.ShouldEqual(expenseReportFact.Submitter); reportFact.Approver.ShouldEqual(expenseReportFact.Approver); } }
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 void ShouldSaveExpenses() { new DatabaseTester().Clean(); var creator = new Employee("1", "1", "1", "1"); var assignee = new Employee("2", "2", "2", "2"); var report = new ExpenseReport(); report.Submitter = creator; report.Approver = assignee; report.Title = "foo"; report.Description = "bar"; report.ChangeStatus(ExpenseReportStatus.Approved); report.Number = "123"; report.AddExpense("howdy", 123.45m); using (ISession session = DataContext.GetTransactedSession()) { session.SaveOrUpdate(creator); session.SaveOrUpdate(assignee); session.SaveOrUpdate(report); session.Transaction.Commit(); } ExpenseReport rehydratedExpenseReport; using (ISession session2 = DataContext.GetTransactedSession()) { rehydratedExpenseReport = session2.Load <ExpenseReport>(report.Id); } Expense x = report.GetExpenses()[0]; Expense y = rehydratedExpenseReport.GetExpenses()[0]; Assert.That(x.Description, Is.EqualTo(y.Description)); Assert.That(x.Amount, Is.EqualTo(y.Amount)); }
public void ShouldSaveAuditEntries() { new DatabaseTester().Clean(); var creator = new Employee("1", "1", "1", "1"); var assignee = new Employee("2", "2", "2", "2"); var report = new ExpenseReport(); report.Submitter = creator; report.Approver = assignee; report.Title = "foo"; report.Description = "bar"; report.ChangeStatus(ExpenseReportStatus.Approved); report.Number = "123"; report.AddAuditEntry(new AuditEntry(creator, DateTime.Now, ExpenseReportStatus.Submitted, ExpenseReportStatus.Approved)); using (ISession session = DataContext.GetTransactedSession()) { session.SaveOrUpdate(creator); session.SaveOrUpdate(assignee); session.SaveOrUpdate(report); session.Transaction.Commit(); } ExpenseReport rehydratedExpenseReport; using (ISession session2 = DataContext.GetTransactedSession()) { rehydratedExpenseReport = session2.Load <ExpenseReport>(report.Id); } var x = report.GetAuditEntries()[0]; var y = rehydratedExpenseReport.GetAuditEntries()[0]; Assert.That(x.EndStatus, Is.EqualTo(y.EndStatus)); }
public void ShouldSaveWithMultipleInstancesOfEmployee() { new ZDataLoader().PopulateDatabase(); IContainer container = DependencyRegistrarModule.EnsureDependenciesRegistered(); var bus = container.GetInstance <Bus>(); Employee approver = bus.Send(new EmployeeByUserNameQuery(ZDataLoader.KnownEmployeeUsername)).Result; Employee submitter = bus.Send(new EmployeeByUserNameQuery(ZDataLoader.KnownEmployeeUsername)).Result; ExpenseReport expenseReport = new ExpenseReport(); expenseReport.Number = ZDataLoader.KnownExpenseReportNumber; expenseReport.Submitter = submitter; expenseReport.Approver = approver; expenseReport.Title = "some title"; expenseReport.Description = "some descriptioni"; expenseReport.Total = 34; using (var context = container.GetInstance <EfCoreContext>()) { context.Update(expenseReport); context.SaveChanges(); } }
public void ShouldNotBeValidWithWrongEmployee() { var order = new ExpenseReport(); order.Status = ExpenseReportStatus.Approved; var employee = new Employee(); var differentEmployee = new Employee(); var approver = new Employee(); order.Submitter = employee; order.Approver = approver; var command = new ApprovedToCancelledCommand(); Assert.That(command.IsValid(new ExecuteTransitionCommand { Report = order, CurrentUser = approver }), Is.False); var command2 = new ApprovedToCancelledCommand(); Assert.That(command2.IsValid(new ExecuteTransitionCommand { Report = order, CurrentUser = differentEmployee }), Is.False); }
public void ShouldSaveAuditEntries() { new DatabaseTester().Clean(); var creator = new Employee("1", "1", "1", "1"); var assignee = new Employee("2", "2", "2", "2"); var order = new ExpenseReport(); order.Submitter = creator; order.Approver = assignee; order.Title = "foo"; order.Description = "bar"; order.ChangeStatus(ExpenseReportStatus.Approved); order.Number = "123"; order.AddAuditEntry(new AuditEntry(creator, DateTime.Now, ExpenseReportStatus.Submitted, ExpenseReportStatus.Approved)); ISession session = DataContext.GetTransactedSession(); session.SaveOrUpdate(creator); session.SaveOrUpdate(assignee); session.Transaction.Commit(); var repository = new ExpenseReportRepository(); repository.Save(order); session.Dispose(); ISession session2 = DataContext.GetTransactedSession(); var rehydratedReport = session2.Load <ExpenseReport>(order.Id); var x = order.GetAuditEntries()[0]; var y = rehydratedReport.GetAuditEntries()[0]; Assert.That(x.BeginStatus, Is.EqualTo(y.BeginStatus)); }
static void Main() { List <Employee> managers = new List <Employee> { new Employee("William Worker", decimal.Zero), new Employee("Mary Manager", new decimal(1000)), new Employee("Victor Vicepres", new decimal(5000)), new Employee("Paula President", new decimal(20000)), }; decimal expenseReportAmount; while (ConsoleInput.TryReadDecimal("Expense report amount:", out expenseReportAmount)) { IExpenseReport expense = new ExpenseReport(expenseReportAmount); bool expenseProcessed = false; foreach (Employee approver in managers) { ApprovalResponse response = approver.ApproveExpense(expense); if (response != ApprovalResponse.BeyondApprovalLimit) { Console.WriteLine("The request was {0}.", response); expenseProcessed = true; break; } } if (!expenseProcessed) { Console.WriteLine("No one was able to approve your expense."); } } }
public void ShouldTransitionStateProperly() { var order = new ExpenseReport(); order.Number = "123"; order.Status = ExpenseReportStatus.Draft; var employee = new Employee(); order.Submitter = employee; var mocks = new MockRepository(); var commandVisitor = mocks.DynamicMock <IStateCommandVisitor>(); commandVisitor.Save(order); commandVisitor.GoToEdit(order); mocks.ReplayAll(); var command = new DraftingCommand(order, employee); command.Execute(commandVisitor); mocks.VerifyAll(); Assert.That(order.Status, Is.EqualTo(ExpenseReportStatus.Draft)); }
internal ExpenseReportViewModel(ExpenseReport expenseReport, IServiceFactory serviceFactory) : this(serviceFactory) { this.Load(expenseReport); }
protected StateCommandBase(ExpenseReport expenseReport, Employee currentUser) { _expenseReport = expenseReport; _currentUser = currentUser; }
private void Load(ExpenseReport expenseReport) { this.Amount = expenseReport.Amount; this.Approver = expenseReport.Approver; this.CostCenter = expenseReport.CostCenter; this.DateResolved = expenseReport.DateResolved; this.DateSubmitted = expenseReport.DateSubmitted; this.EmployeeId = expenseReport.EmployeeId; this.ExpenseReportId = expenseReport.ExpenseReportId; this.Notes = expenseReport.Notes; this.Status = expenseReport.Status; switch (this.Status) { case ExpenseReportStatus.Saved: this.DisplayDate = this.DateSaved.GetValueOrDefault(); break; case ExpenseReportStatus.Approved: this.DisplayDate = this.DateResolved.GetValueOrDefault(); break; case ExpenseReportStatus.Submitted: this.DisplayDate = this.DateSubmitted.GetValueOrDefault(); break; } }
protected override bool userCanExecute(Employee currentUser, ExpenseReport report) { return currentUser == report.Submitter; }
private async void LoadData() { viewModel.VisibleLoad = true; viewModel.ExpenseEntries = new System.Collections.ObjectModel.ObservableCollection <ExpenseEntryDetailsViewModel>(); List <ProjectInsight.Models.TimeAndExpense.ExpenseEntry> expenseEntries = new List <ProjectInsight.Models.TimeAndExpense.ExpenseEntry>(); if (viewModel.IsCurrent) { listView.AllowSwiping = true; expenseEntries = await ExpenseEntryService.client.GetNotOnExpenseReportAsync(Common.CurrentWorkspace.UserID, new ProjectInsight.Models.Base.ModelProperties("default,UploadedFile,ProjectName,CompanyName,Task,Project;Project:ItemNumberFullAndNameDisplayPreference;Task:ItemNumberFullAndNameDisplayPreference")); expenseEntries = expenseEntries.OrderByDescending(x => x.UpdatedDateTimeUTC).ToList(); viewModel.Name = String.Empty; var report = await ExpenseReportService.client.GetExpenseReportInfoAsync(Common.CurrentWorkspace.UserID); if (report != null) { if (report.UnsubmittedExpenseCount != null && report.UnsubmittedExpenseCount > 0) { viewModel.IsVisibleSubmitButton = true; } else { viewModel.IsVisibleSubmitButton = false; } viewModel.ActualCost = report.UnsubmittedExpenseTotal != null ? report.UnsubmittedExpenseTotal.Value : 0; if (report.EarliestExpenseEntryDate != null) { viewModel.PeriodFormated = string.Format("{0} - {1}", report.EarliestExpenseEntryDate.Value.ToString("M/d/yy"), "Present"); } } } else { if (viewModel.Id != null) { ExpenseReport report = await ExpenseReportService.client.GetAsync(viewModel.Id.Value, new ProjectInsight.Models.Base.ModelProperties("default,UserApprover,ApprovalStatusDescription,ExpenseEntries,IsRejected,ExpenseEntries,User;ExpenseEntry:default,ProjectName,CompanyName,Task,Project;Project:ItemNumberFullAndNameDisplayPreference;Task:ItemNumberFullAndNameDisplayPreference;User:default,Photo,PhotoUrl,PhotoMediumUrl,PhotoThumbnailUrl,AvatarHtml")); if (report != null) { viewModel.ActualCost = report.ActualCost != null ? report.ActualCost.Value : 0; expenseEntries = report.ExpenseEntries.OrderByDescending(x => x.Date).ToList(); viewModel.Name = report.User.FirstName + " " + report.User.LastName; viewModel.ApprovalStatusDescription = report.ApprovalStatusDescription; listView.AllowSwiping = report.IsRejected ?? false; if (report.StartDate == null || report.EndDate == null) { viewModel.PeriodFormated = String.Empty; } else { viewModel.PeriodFormated = string.Format("{0} - {1}", report.StartDate.Value.ToString("M/d/yy"), report.EndDate.Value.ToString("M/d/yy")); } int status = report.ApprovalStatus ?? 0; if (report.UserApprover_Id.HasValue && report.UserApprover_Id == Common.CurrentWorkspace.UserID && status == 0) { viewModel.RequiresApprovalFromCurrentUser = true; } else { viewModel.RequiresApprovalFromCurrentUser = false; } viewModel.ShowStatus = true; //---------------------- if (status == 5) { statusIcon.Source = "approved"; // "timesheet_approved.png"; } else if (status == 6) { statusIcon.Source = "rejected";//"timesheet_rejected.png"; } else { statusIcon.Source = "pending"; //"timesheet_pending.png"; } slAvatar.Children.Clear(); if (string.IsNullOrEmpty(report.UserApprover.PhotoUrl)) { if (!string.IsNullOrEmpty(report.UserApprover.AvatarHtml)) { string userHTML = report.UserApprover.AvatarHtml; //"<div class=\"user-avatar\" title=\"Gjoko Veljanoski\" style=\"background-color:#00bfff\">GV</div>" //<img class="user-avatar" src="/ProjectInsight.WebApp/Sites/Files/a222e57233a14e15ab67d25e6dbab95e/UserPhotos/6fcc5602c49043c3a2d8d39175040e68/tn_avatar.png" alt="Gjoko Veljanoski" title="Gjoko Veljanoski" /> string myDiv = report.UserApprover.AvatarHtml; HtmlDocument doc = new HtmlDocument(); doc.LoadHtml(myDiv); HtmlNode node = doc.DocumentNode.SelectSingleNode("div"); string AvatarInitials = "US"; string AvatarColor = "#fff"; string PhotoURL = string.Empty; if (node != null) { AvatarInitials = (node.ChildNodes[0]).OuterHtml; foreach (HtmlAttribute attr in node.Attributes) { if (attr.Name.ToLower() == "style") { string[] parts = attr.Value.Split('#'); if (parts != null && parts.Length > 1) { AvatarColor = parts[1]; } } } } else { HtmlNode node2 = doc.DocumentNode.SelectSingleNode("img"); if (node2 != null) { foreach (HtmlAttribute attr in node2.Attributes) { if (attr.Name.ToLower() == "src") { string imageUrl = attr.Value.Replace("/ProjectInsight.WebApp", ""); PhotoURL = Common.CurrentWorkspace.WorkspaceURL + imageUrl; } } } } if (string.IsNullOrEmpty(PhotoURL)) { slAvatar.BackgroundColor = Color.FromHex(AvatarColor); Label lbInitials = new Label(); lbInitials.HeightRequest = 50; lbInitials.WidthRequest = 50; lbInitials.HorizontalOptions = LayoutOptions.CenterAndExpand; lbInitials.VerticalOptions = LayoutOptions.CenterAndExpand; lbInitials.HorizontalTextAlignment = TextAlignment.Center; lbInitials.VerticalTextAlignment = TextAlignment.Center; lbInitials.TextColor = Color.White; lbInitials.Text = AvatarInitials; lbInitials.FontSize = 26; if (Device.RuntimePlatform.ToLower() == "android") { lbInitials.FontFamily = "OpenSans-SemiBold.ttf#Open Sans"; } else { lbInitials.FontFamily = "OpenSans-SemiBold"; } slAvatar.Children.Add(lbInitials); } else { Image photo = new Image(); photo.Source = ImageSource.FromUri(new Uri(Common.CurrentWorkspace.WorkspaceURL + report.UserApprover.PhotoUrl)); photo.HeightRequest = 50; photo.WidthRequest = 50; photo.HorizontalOptions = LayoutOptions.CenterAndExpand; photo.VerticalOptions = LayoutOptions.CenterAndExpand; slAvatar.Children.Add(photo); } slStatus.Children.Add(slAvatar); } } else { Image photo = new Image(); photo.Source = ImageSource.FromUri(new Uri(Common.CurrentWorkspace.WorkspaceURL + report.UserApprover.PhotoUrl)); photo.HeightRequest = 50; photo.WidthRequest = 50; //photo.HorizontalOptions = LayoutOptions.CenterAndExpand; photo.VerticalOptions = LayoutOptions.CenterAndExpand; slAvatar.Children.Add(photo); } //---------------------- } } } foreach (var entry in expenseEntries) { try { ExpenseEntryDetailsViewModel newEntry = new ExpenseEntryDetailsViewModel(); newEntry.Id = entry.Id; newEntry.FirstLine = string.Empty; if (entry.Project != null && !string.IsNullOrEmpty(entry.Project.ItemNumberFullAndNameDisplayPreference)) { newEntry.FirstLine = entry.Project.ItemNumberFullAndNameDisplayPreference; } else { if (!string.IsNullOrEmpty(entry.CompanyName)) { newEntry.FirstLine = entry.CompanyName; } } newEntry.SecondLine = entry.Date != null?entry.Date.Value.ToString("M/d/yy") : String.Empty; if (entry.Task != null && !string.IsNullOrEmpty(entry.Task.ItemNumberFullAndNameDisplayPreference)) { newEntry.SecondLine += " | " + entry.Task.ItemNumberFullAndNameDisplayPreference; } newEntry.ThirdLine = entry.Description ?? String.Empty; newEntry.ActualCost = entry.ActualCost ?? 0; viewModel.ExpenseEntries.Add(newEntry); } catch (Exception ex) { } } int height = 10 + (viewModel.ExpenseEntries.Count() * 80); listView.HeightRequest = slParent.HeightRequest = height; viewModel.VisibleLoad = false; }
public ProcessExpenseLineVM() { ExpenseLines = new List <ExpenseLine>(); ExpenseReport = new ExpenseReport(); }
public DraftToSubmittedCommand(ExpenseReport expenseReport, Employee currentUser) : base(expenseReport, currentUser) { }
protected override bool userCanExecute(Employee currentUser, ExpenseReport report) { if (report.Approver == null) return false; return report.Approver.CanActOnBehalf(currentUser); }
public void SetUp() { report = new ExpenseReport(); printer = new MockReportPrinter(); }
protected abstract bool userCanExecute(Employee currentUser, ExpenseReport report);
public SubmittedToApprovedCommand(ExpenseReport expenseReport, Employee currentUser) : base(expenseReport, currentUser) { }
public async Task SaveAsync() { await this._viewService.ExecuteBusyActionAsync( async () => { ExpenseReport expenseReport = new ExpenseReport() { Amount = this.Amount, Approver = this.Approver, CostCenter = this.CostCenter, DateResolved = this.DateResolved.GetValueOrDefault(), DateSubmitted = this.DateSubmitted.GetValueOrDefault(), EmployeeId = this.EmployeeId, ExpenseReportId = this.ExpenseReportId, Notes = this.Notes, Status = this.Status, }; // save expense report to repository if (this.ExpenseReportId == 0) { this.ExpenseReportId = await this._repositoryService.CreateNewExpenseReportAsync(expenseReport); } else { this.ExpenseReportId = await this._repositoryService.UpdateExpenseReportAsync(expenseReport); } await this.LoadAsync(this.ExpenseReportId); }); }
public async Task PostExpenseReportAsync(ExpenseReport report) { await expenseReportTable.InsertAsync(report); await SyncAsync(); }
internal ExpenseReportViewModel(ExpenseReportsViewModel expenseReportsViewModel, ExpenseReport expenseReport) : this() { ExpenseReportsViewModel = expenseReportsViewModel; this.Load(expenseReport); }
public ProcessExpenseLineVM(ExpenseReport expenseReport, List <ExpenseLine> expenseLines) { ExpenseLines = expenseLines; ExpenseReport = expenseReport; }
private static void DemoChainOfResponsibilityPattern() { #region Problem of Logic to handle expenseReport is captured at wrong level. /* Caller is responsible for iterating over the list. * This means, business logic of how expenseReport is promoted in Management chain is captured at the wrong level. * I should not be worried about getting approval of my expense report in Management chain. My manager should do it for me. * With the Chain of Responsibility pattern, we'll able to achieve the abstraction required behind the scenes. */ //var employees = new List<Employee> //{ // new Employee("William Worker", decimal.Zero), // new Employee("Mary Manager", 1000), // new Employee("Victor VicePres", 5000), // new Employee("Paula President", 20000), //}; //decimal expenseReportAmount; //while(ConsoleInput.TryReadDecimal("Expense report amount:", out expenseReportAmount)) //{ // IExpenseReport expense = new ExpenseReport(expenseReportAmount); // bool expenseProcessed = false; // foreach (var approver in employees) // { // var response = approver.ApproveResponse(expense); // if (response != ApprovalResponse.BeyondApprovalLimit) // { // Console.WriteLine($"The request was {response}."); // expenseProcessed = true; // break; // } // } // if (!expenseProcessed) // { // Console.WriteLine("No one was able to approve your expense."); // } //} #endregion #region Solution through Chain of Responsibility pattern ExpenseHandler william = new ExpenseHandler(new Employee("William Worker", decimal.Zero)); ExpenseHandler mary = new ExpenseHandler(new Employee("Mary Manager", 1000)); ExpenseHandler victor = new ExpenseHandler(new Employee("Victor VicePres", 5000)); ExpenseHandler paula = new ExpenseHandler(new Employee("Paula President", 20000)); william.RegisterNext(mary); mary.RegisterNext(victor); victor.RegisterNext(paula); while (ConsoleInput.TryReadDecimal("Expense report amount:", out decimal expenseReportAmount)) { IExpenseReport expense = new ExpenseReport(expenseReportAmount); ApprovalResponse response = william.Approve(expense); Console.WriteLine($"The request was {response}."); } #endregion }
public async Task<int> UpdateExpenseReportAsync(ExpenseReport expenseReport) { try { using (var client = new ExpenseServiceClient()) { return await client.UpdateExpenseReportAsync(expenseReport); } } catch (System.ServiceModel.EndpointNotFoundException) { this._viewService.ShowError("Could not connect to configured service."); } catch (Exception ex) { this._viewService.ShowError(String.Format("Error in WCF call: {0}", ex.Message)); } return 0; }
public void PopulateDatabase() { new DatabaseTester().Clean(); ISession session = DataContext.GetTransactedSession(); //Trainer1 var jpalermo = new Employee("jpalermo", "Jeffrey", "Palermo", "*****@*****.**"); session.SaveOrUpdate(jpalermo); //Person 1 //Person 2 //Person 3 var damian = new Employee("damian", "Damian", "Brady", "*****@*****.**"); session.SaveOrUpdate(damian); //Person 4 //Person 5 //Person 6 var paul = new Employee("paul", "Paul", "Stovell", "*****@*****.**"); session.SaveOrUpdate(paul); //Person 7 //Person 8 //Person 9 //Person 10 //Person 11 //Person 12 //Person 13 var hsimpson = new Employee("hsimpson", "Homer", "Simpson", "*****@*****.**"); session.SaveOrUpdate(hsimpson); foreach (ExpenseReportStatus status in ExpenseReportStatus.GetAllItems()) { var report = new ExpenseReport(); report.Number = Guid.NewGuid().ToString().Substring(0, 5).ToUpper(); report.Submitter = jpalermo; report.Approver = jpalermo; report.Status = status; report.Title = "Expense report starting in status " + status; report.Description = "Foo, foo, foo, foo " + status; new DateTime(2000, 1, 1, 8, 0, 0); report.ChangeStatus(ExpenseReportStatus.Draft); report.ChangeStatus(ExpenseReportStatus.Submitted); report.ChangeStatus(ExpenseReportStatus.Approved); session.SaveOrUpdate(report); } var order2 = new ExpenseReport(); order2.Number = Guid.NewGuid().ToString().Substring(0, 5).ToUpper(); order2.Submitter = jpalermo; order2.Approver = jpalermo; order2.Status = ExpenseReportStatus.Approved; order2.Title = "Expense report starting in status "; order2.Description = "Foo, foo, foo, foo "; new DateTime(2000, 1, 1, 8, 0, 0); session.SaveOrUpdate(order2); session.Transaction.Commit(); session.Dispose(); }
public DraftingCommand(ExpenseReport expenseReport, Employee currentUser) : base(expenseReport, currentUser) { }