public void RefreshEntrySubtasks() { if (EntryType > 0) { return; } EntrySubtasks.Clear(); if (Entry.TaskId == null) { return; } var task = Tasks.FirstOrDefault(t => t.TaskId == Entry.TaskId); if (task == null) { foreach (var est in Entry.EntrySubtasks) { EntrySubtasks.Add(new EntrySubtaskItem() { EntrySubtask = est }); } } else { foreach (var st in task.Subtasks.OrderBy(st => st.Sequence)) { var est = Entry.EntrySubtasks.FirstOrDefault(et => et.SubtaskId == st.SubtaskId); if (est == null) { est = new EntrySubtask(); est.Subtask = st; est.SubtaskId = st.SubtaskId; Entry.EntrySubtasks.Add(est); } else if (est.EnteredBy == null && est.EnteredById != null) { est.EnteredBy = Users.FirstOrDefault(u => u.UserId == est.EnteredById); } EntrySubtasks.Add(new EntrySubtaskItem() { EntrySubtask = est }); } } EntrySubtasksLoaded?.Invoke(this, new EventArgs()); }
public EntryEditViewModel(DataLayer.Models.Entry entry, int entryType, bool forUser, DateTime entryDate) { EntryType = entryType; ForUser = forUser; Entry = entry ?? new DataLayer.Models.Entry() { EntryType = entryType, EntrySubtasks = new ObservableCollection <EntrySubtask>(), EntryDateValue = entryDate, CompanyIdValue = LoginHelper.GetLoggedInUser().User.CompanyIdValue }; LoadScreenCommand = new Command(async() => await ExecuteLoadScreen()); Shifts = new ObservableCollection <Shift>(); Statuses = new ObservableCollection <Status>(); Tasks = new ObservableCollection <Task>(); Users = new ObservableCollection <User>(); EntrySubtasks = new ObservableCollection <EntrySubtaskItem>(); EditingSubtask = new EntrySubtask() { Subtask = new Subtask(), Status = new Status() }; this.SaveCommand = new Command(async() => await this.saveEntry()); }
public EntrySubtaskEditViewModel(Entry entry, EntrySubtask entrySubtask, ObservableCollection <Status> statuses) { Entry = entry; EntrySubtask = entrySubtask; Statuses = statuses; if (EntrySubtask != null) { if (EntrySubtask.StatusId != null) { Status = Statuses.FirstOrDefault(s => s.StatusId == EntrySubtask.StatusId); } if (EntrySubtask.EnteredById == null) { var user = LoginHelper.GetLoggedInUser(); EntrySubtask.EnteredById = user.User.UserId; EntrySubtask.EnteredBy = user.User; } EnteredBy = EntrySubtask.EnteredBy.DisplayName; Addressed = EntrySubtask.AddressedValue; } this.SaveCommand = new Xamarin.Forms.Command(() => { if (Status == null) { MessageHelper.ShowMessage("Status required!", "Validation"); return; } var user = LoginHelper.GetLoggedInUser(); if (EntrySubtask != null) { EntrySubtask.Status = Status; EntrySubtask.StatusId = Status.StatusId; EntrySubtask.Addressed = Addressed; EntrySubtask.EnteredBy = user.User; EntrySubtask.EnteredById = user.User.UserId; if (!Entry.EntrySubtasks.Any(es => es.SubtaskId == EntrySubtask.SubtaskId)) { Entry.EntrySubtasks.Add(EntrySubtask); } } else { foreach (var st in Entry.Task.Subtasks) { var curr = Entry.EntrySubtasks.FirstOrDefault(es => es.SubtaskId == st.SubtaskId); if (curr == null) { curr = new EntrySubtask(); Entry.EntrySubtasks.Add(curr); } curr.Status = Status; curr.StatusId = Status.StatusId; curr.Addressed = Addressed; curr.EnteredBy = user.User; curr.EnteredById = user.User.UserId; } } Xamarin.Forms.MessagingCenter.Send <EntrySubtaskEditViewModel>(this, SUCCESS); }); }