/// <summary>
 /// Just a quick method to re-sum the hours
 /// </summary>
 private void CalculateHours (Assignment assignment)
 {
     if (laborHours == null)
         assignment.TotalHours = TimeSpan.Zero;
     else
         assignment.TotalHours = TimeSpan.FromMilliseconds (laborHours.Sum (l => l.Hours.TotalMilliseconds));
 }
 public Task<List<Photo>> GetPhotosForAssignmentAsync (Assignment assignment, CancellationToken cancellationToken = default(CancellationToken))
 {
     return Database.GetConnection (cancellationToken)
         .Table<Photo> ()
         .Where (p => p.AssignmentId == assignment.Id)
         .ToListAsync ();
 }
 public Task<List<Labor>> GetLaborForAssignmentAsync (Assignment assignment, CancellationToken cancellationToken = default(CancellationToken))
 {
     return Database.GetConnection (cancellationToken)
         .Table<Labor> ()
         .Where (l => l.AssignmentId == assignment.Id)
         .ToListAsync ();
 }
 /// <summary>
 /// Deletes a labor entry
 /// </summary>
 public Task DeleteLaborAsync (Assignment assignment, Labor labor)
 {
     return service.DeleteLaborAsync (labor)
         .ContinueWith (t => {
             laborHours.Remove (labor);
             CalculateHours (assignment);
         });
 }
 /// <summary>
 /// Deletes an expense report
 /// </summary>
 public Task DeleteExpenseAsync (Assignment assignment, Expense expense)
 {
     return service.DeleteExpenseAsync (expense)
         .ContinueWith (t => {
             expenses.Remove (expense);
             CalculateExpenses (assignment);
         });
 }
		/// <summary>
		/// Sets the assignment for this cell
		/// </summary>
		public void SetAssignment(ConfirmationController controller, Assignment assignment, UITableView tableView)
		{
			this.controller = controller;
			this.assignment = assignment;
			this.tableView = tableView;

			completeButton.Enabled = assignment.CanComplete;
		}
        public void SaveAssignmentItem ()
        {
            var assignment = new Assignment();
            var task = viewModel.SaveAssignmentItemAsync (assignment, new AssignmentItem ());

            task.Wait ();

            Assert.That (assignment.TotalItems, Is.EqualTo (1));
        }
        public void DeleteAssignmentItem ()
        {
            var assignment = new Assignment { TotalItems = 1 };
            var task = viewModel.DeleteAssignmentItemAsync (assignment, new AssignmentItem ());

            task.Wait ();

            Assert.That (assignment.TotalItems, Is.EqualTo (0));
        }
        public void SavePhoto ()
        {
            var assignment = new Assignment ();
            var task = viewModel.SavePhotoAsync (assignment, new Photo ());

            task.Wait ();

            Assert.That (viewModel.Photos.Count, Is.EqualTo (1));
        }
 public Task<List<Expense>> GetExpensesForAssignmentAsync (Assignment assignment, CancellationToken cancellationToken = default(CancellationToken))
 {
     return Database.GetConnection (cancellationToken)
         .QueryAsync<Expense> (@"
             select Expense.*, case when ExpensePhoto.Id is null then 0 else 1 end as HasPhoto
             from Expense
             left outer join ExpensePhoto
             on ExpensePhoto.ExpenseId = Expense.Id
             where Expense.AssignmentId = ?", 
             assignment.Id);
 }
        /// <summary>
        /// Saves an assignment item
        /// </summary>
        public Task SaveAssignmentItemAsync (Assignment assignment, AssignmentItem item)
        {
            bool newItem = item.Id == 0;

            return service
                .SaveAssignmentItemAsync (item)
                .ContinueWith (t => {
                    if (newItem)
                        assignment.TotalItems++;
                });
        }
        /// <summary>
        /// Saves a labor entry
        /// </summary>
        public Task SaveLaborAsync (Assignment assignment, Labor labor)
        {
            bool newItem = labor.Id == 0;

            return service.SaveLaborAsync (labor)
                .ContinueWith (t => {
                    if (newItem)
                        laborHours.Add (labor);
                    CalculateHours (assignment);
                });
        }
        public void DeletePhoto ()
        {
            var assignment = new Assignment { TotalItems = 1 };
            var photo = new Photo ();
            viewModel.Photos = new List<Photo> { photo };
            var task = viewModel.DeletePhotoAsync (assignment, photo);

            task.Wait ();

            Assert.That (viewModel.Photos.Count, Is.EqualTo (0));
        }
        /// <summary>
        /// Saves an expense report
        /// </summary>
        public Task SaveExpenseAsync (Assignment assignment, Expense expense)
        {
            bool newItem = expense.Id == 0;

            return service.SaveExpenseAsync (expense)
                .ContinueWith (t => {
                    if (newItem)
                        expenses.Add (expense);
                    CalculateExpenses (assignment);
                });
        }
 public Task<List<AssignmentItem>> GetItemsForAssignmentAsync (Assignment assignment, CancellationToken cancellationToken = default(CancellationToken))
 {
     return Database.GetConnection (cancellationToken)
         .QueryAsync<AssignmentItem> (@"
             select AssignmentItem.*, Item.Number, Item.Name
             from AssignmentItem
             inner join Item
             on Item.Id = AssignmentItem.ItemId
             where AssignmentItem.AssignmentId = ?
             order by Item.Name",
             assignment.Id);
 }
 public Task<List<AssignmentItem>> GetItemsForAssignmentAsync (Assignment assignment, CancellationToken cancellationToken)
 {
     return Task.Factory.StartNew (() => new List<AssignmentItem> ()
     {
         new AssignmentItem
         {
             Id = 1,
             AssignmentId = 1,
             ItemId = 1,
         },
     });
 }
        public void DeleteLabor ()
        {
            var assignment = new Assignment();
            var loadTask = viewModel.LoadLaborHoursAsync (assignment);

            loadTask.Wait ();
            
            var task = viewModel.DeleteLaborAsync (assignment, viewModel.LaborHours.First());

            task.Wait ();

            Assert.That (assignment.TotalHours, Is.EqualTo (TimeSpan.FromHours(0)));
        }
        public void SaveLabor ()
        {
            var assignment = new Assignment ();
            var loadTask = viewModel.LoadLaborHoursAsync (assignment);

            loadTask.Wait ();

            var task = viewModel.SaveLaborAsync (assignment, new Labor { Hours = TimeSpan.FromHours (1) });

            task.Wait ();

            Assert.That (assignment.TotalHours, Is.EqualTo (TimeSpan.FromHours(2)));
        }
        public SummaryActivity ()
        {
            assignmentViewModel = ServiceContainer.Resolve<AssignmentViewModel> ();
            itemViewModel = ServiceContainer.Resolve<ItemViewModel> ();
            laborViewModel = ServiceContainer.Resolve<LaborViewModel> ();
            photoViewModel = ServiceContainer.Resolve<PhotoViewModel> ();
            expenseViewModel = ServiceContainer.Resolve<ExpenseViewModel> ();
            documentViewModel = ServiceContainer.Resolve<DocumentViewModel> ();
            historyViewModel = ServiceContainer.Resolve<HistoryViewModel> ();
            menuViewModel = ServiceContainer.Resolve<MenuViewModel> ();

            assignment = assignmentViewModel.SelectedAssignment;
        }
        public void DeleteExpense ()
        {
            var assignment = new Assignment();
            var loadTask = viewModel.LoadExpensesAsync (assignment);

            loadTask.Wait ();
            
            var task = viewModel.DeleteExpenseAsync (assignment, viewModel.Expenses.First());

            task.Wait ();

            Assert.That (assignment.TotalExpenses, Is.EqualTo (0m));
        }
        public void SaveExpense ()
        {
            var assignment = new Assignment ();
            var loadTask = viewModel.LoadExpensesAsync (assignment);

            loadTask.Wait ();

            var task = viewModel.SaveExpenseAsync (assignment, new Expense { Cost = 2 });

            task.Wait ();

            Assert.That (assignment.TotalExpenses, Is.EqualTo (2m));
        }
		/// <summary>
		/// Sets the assignment for this cell
		/// </summary>
		public void SetAssignment(ConfirmationController controller, Assignment assignment, UITableView tableView)
		{
			this.controller = controller;
			this.assignment = assignment;
			this.tableView = tableView;

			completeButton.Enabled = assignment.CanComplete;
			completeButton.SetBackgroundImage (Theme.Complete, UIControlState.Normal);
			completeButton.SetBackgroundImage (Theme.CompleteInactive, UIControlState.Disabled);
			completeButton.SetTitleColor (UIColor.White, UIControlState.Normal);
			completeButton.SetTitle ("Complete", UIControlState.Normal);
			completeButton.SetTitle ("Completed", UIControlState.Disabled);
		}
 public Task<List<Labor>> GetLaborForAssignmentAsync (Assignment assignment, CancellationToken cancellationToken)
 {
     return Task.Factory.StartNew (() => new List<Labor> ()
     {
         new Labor
         {
             Id = 1,
             AssignmentId = 1,
             Description = "New Labor",
             Hours = TimeSpan.FromHours(1),
             Type = LaborType.Hourly,
         },
     });
 }
Example #24
0
        /// <summary>
        /// Saves a photo
        /// </summary>
        public Task SavePhotoAsync (Assignment assignment, Photo photo)
        {
            bool newPhoto = photo.Id == 0;

            //Update the date
            photo.Date = DateTime.Now;

            return service
                .SavePhotoAsync (photo)
                .ContinueOnCurrentThread (t => {
                    if (newPhoto) {
                        if (photos == null)
                            photos = new List<Photo> ();
                        photos.Add (photo);
                        OnPropertyChanged ("Photos");
                    }
                });
        }
		/// <summary>
		/// Set the signature for this cell
		/// </summary>
		public void SetSignature (ConfirmationController controller, Assignment assignment, Data.Signature signature)
		{
			this.controller = controller;

			//Dispose the previous image if there was one
			if (image != null) {
				image.Dispose ();
				image = null;
			}

			if (signature == null) {
				this.signature.Hidden = true;
				this.signature.SetBackgroundImage (null, UIControlState.Normal);

				addSignature.Hidden = false;
				addSignature.SetTitleColor (UIColor.White, UIControlState.Normal);

				if (assignment.Status != AssignmentStatus.Complete && !assignment.IsHistory) {
					addSignature.Enabled = true;
					addSignature.SetBackgroundImage (Theme.ButtonDark, UIControlState.Normal);
					addSignature.SetTitle ("Add Signature", UIControlState.Normal);
				} else {
					addSignature.Enabled = false;
					addSignature.SetBackgroundImage (null, UIControlState.Normal);
					addSignature.SetTitle ("No Signature", UIControlState.Normal);
				}
			} else {
				image = signature.Image.ToUIImage ();
				this.signature.Hidden = false;
				this.signature.SetBackgroundImage (image, UIControlState.Normal);
				this.signature.Layer.CornerRadius = 7;
				this.signature.ClipsToBounds = true;
				this.signature.Enabled = !assignment.IsReadonly;

				addSignature.Hidden = true;
			}
		}
Example #26
0
		/// <summary>
		/// Sets the current active assignment
		/// </summary>
		/// <param name="visible"></param>
		void SetAssignment (bool visible)
		{
			if (!visible) {
				assignmentMapViewLayout.Visibility = ViewStates.Gone;
				return;
			}

			assignmentMapViewLayout.Visibility = ViewStates.Visible;
			assignment = assignmentViewModel.ActiveAssignment;

			buttonLayout.Visibility = ViewStates.Gone;
			timerLayout.Visibility = ViewStates.Visible;

			var adapter = new SpinnerAdapter<AssignmentStatus> (assignmentViewModel.AvailableStatuses, this, Resource.Layout.SimpleSpinnerItem);
			adapter.TextColor = Resources.GetColor (Resource.Color.greyspinnertext);
			adapter.Background = Resources.GetColor (Resource.Color.assignmentblue);
			activeSpinner.Adapter = adapter;
			activeSpinner.SetSelection (assignmentViewModel.AvailableStatuses.ToList ().IndexOf (assignment.Status));
			activeSpinner.SetBackgroundResource (Resource.Drawable.triangleblue);
			spinnerImage.SetImageResource (Resource.Drawable.EnrouteImage);

			number.Text = assignment.Priority.ToString ();
			job.Text = string.Format ("#{0} {1}\n{2}", assignment.JobNumber, assignment.StartDate.ToShortDateString (), assignment.CompanyName);
			name.Text = assignment.ContactName;
			phone.Text = assignment.ContactPhone;
			address.Text = string.Format ("{0}\n{1}, {2} {3}", assignment.Address, assignment.City, assignment.State, assignment.Zip);
			timerText.Text = assignmentViewModel.Hours.ToString (@"hh\:mm\:ss");
		}
Example #27
0
		MarkerOptions GetMarkerOptionsForAssignment (Assignment assignment)
		{
			var markerOptions = new MarkerOptions ();
			markerOptions.SetPosition (new LatLng (assignment.Latitude, assignment.Longitude));
			markerOptions.SetTitle (assignment.CompanyName);
			markerOptions.SetSnippet (string.Format ("{0} {1}, {2} {3}",
				assignment.Address, assignment.City, assignment.State, assignment.Zip));
			
			return markerOptions;
		}
		/// <summary>
		/// Sets up the assignment for the cell
		/// </summary>
		public void SetAssignment (AssignmentsController controller, Assignment assignment, NSIndexPath indexPath)
		{
			this.controller = controller;
			this.assignment = assignment;
			this.indexPath = indexPath;

			//Update font size on priority
			if (assignment.Priority >= 10) {
				priority.Font = Theme.FontOfSize (14);
			} else {
				priority.Font = Theme.FontOfSize (18);
			}

			//Now make any changes dependant on the assignment passed in
			((UIImageView)BackgroundView).Image = Theme.AssignmentGrey;
			priority.Text = assignment.Priority.ToString ();
			numberAndDate.Text = string.Format ("#{0} {1}", assignment.JobNumber, assignment.StartDate.Date.ToShortDateString ());
			title.Text = assignment.CompanyName;
			startAndEnd.Text = assignment.FormatStartEndDates ();
			contact.TopLabel.Text = assignment.ContactName;
			contact.BottomLabel.Text = assignment.ContactPhone;
			address.TopLabel.Text = assignment.Address;
			address.BottomLabel.Text = string.Format ("{0}, {1} {2}", assignment.City, assignment.State, assignment.Zip);

			if (assignment.Status == AssignmentStatus.New) {
				if (statusView != null)
					statusView.Hidden = true;
				status.Hidden = true;
				accept.Hidden =
					decline.Hidden = false;

				//Alpha on disabled rows
				if (Theme.IsiOS7) {
					priority.Alpha =
						priorityBackground.Alpha =
						numberAndDate.Alpha =
						title.Alpha =
						contact.Alpha = 
						address.Alpha = 0.5f;
				}

			} else {
				if (statusView != null)
					statusView.Hidden = false;
				status.Hidden = false;
				accept.Hidden =
					decline.Hidden = true;

				//Alpha on disabled rows
				if (Theme.IsiOS7) {
					priority.Alpha =
						priorityBackground.Alpha =
						numberAndDate.Alpha =
						title.Alpha =
						contact.Alpha = 
						address.Alpha = 1;
				}

				status.Assignment = assignment;
			}
		}
 /// <summary>
 /// Loads the signature for an assignment
 /// </summary>
 public Task LoadSignatureAsync (Assignment assignment)
 {
     return service.GetSignatureAsync (assignment).ContinueOnCurrentThread (t => Signature = t.Result);
 }
        /// <summary>
        /// Saves an assignment, and applies any needed changes to the active one
        /// </summary>
        public Task SaveAssignmentAsync (Assignment assignment)
        {
            //Save the assignment
            Task task = service.SaveAssignmentAsync (assignment);

            //If the active assignment should be put on hold
            if (activeAssignment != null &&
                assignment != activeAssignment &&
                assignment.Status == AssignmentStatus.Active) {

                //Set the active assignment to hold and save it
                activeAssignment.Status = AssignmentStatus.Hold;
                if (Recording) {
                    task = task.ContinueWith (PauseAsync ());
                }
                task = task.ContinueWith (service.SaveAssignmentAsync (activeAssignment));
            }

            //If we are saving the active assignment, we need to pause it
            if (assignment == activeAssignment &&
                assignment.Status != AssignmentStatus.Active &&
                Recording) {
                task = task.ContinueWith (PauseAsync ());
                Hours = TimeSpan.Zero;
            }

            //Set the active assignment
            if (assignment.Status == AssignmentStatus.Active) {
                ActiveAssignment = assignment;
            }

            return task;
        }
 public Task <Signature> GetSignatureAsync(Assignment assignment, CancellationToken cancellationToken = default(CancellationToken))
 {
     return(Database.GetConnection(cancellationToken).Table <Signature> ().Where(s => s.AssignmentId == assignment.Id).FirstOrDefaultAsync());
 }
 public Task <int> SaveAssignmentAsync(Assignment assignment, CancellationToken cancellationToken = default(CancellationToken))
 {
     return(Database.GetConnection(cancellationToken)
            .UpdateAsync(assignment));
 }