Ejemplo n.º 1
0
        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());
        }
Ejemplo n.º 2
0
 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);
            });
        }