public DayCommentViewModel(INavigation navigation, DateService dateService, IRepoManager repoManager)
        {
            _repoManager = repoManager ?? throw new ArgumentNullException(nameof(repoManager));
            _dateService = dateService ?? throw new ArgumentNullException(nameof(dateService));

            SaveCommand = new Command(async() =>
            {
                _repoManager.QuestionRepository.Add(new Question()
                {
                    QuestionKey  = NotesQuestion,
                    QuestionDate = _dateService.SelectedDay.Time,
                    Answer       = Notes,
                    Timestamp    = DateTimeOffset.Now
                });

                _repoManager.QuestionRepository.Add(new Question()
                {
                    QuestionKey  = TravelQuestion,
                    QuestionDate = _dateService.SelectedDay.Time,
                    Answer       = SaveItemsToString(TravelItems),
                    Timestamp    = DateTimeOffset.Now
                });

                _repoManager.QuestionRepository.Add(new Question()
                {
                    QuestionKey  = PhoneQuestion,
                    QuestionDate = _dateService.SelectedDay.Time,
                    Answer       = SaveItemsToString(PhoneItems),
                    Timestamp    = DateTimeOffset.Now
                });

                await navigation.PopAsync();
            });

            CancelCommand = new Command(async() =>
            {
                await navigation.PopAsync();
            });

            TravelItems.Add(new SelectionKeyItem()
            {
                Key = "NoSpecial", Item = AppResources.NoSpecialQuestionAnswerLabel
            });
            TravelItems.Add(new SelectionKeyItem()
            {
                Key = "NotApplicable", Item = AppResources.NotApplicableQuestionAnswerLabel
            });
            TravelItems.Add(new SelectionKeyItem()
            {
                Key = "DifferentAddresses", Item = AppResources.DifferentAddressesQuestionAnswerLabel
            });
            TravelItems.Add(new SelectionKeyItem()
            {
                Key = "DifferentTransportModes", Item = AppResources.DifferentTransportModesQuestionAnswerLabel
            });
            TravelItems.Add(new SelectionKeyItem()
            {
                Key = "DifferentTravelTimes", Item = AppResources.DifferentTravelTimesQuestionAnswerLabel
            });
            TravelItems.Add(new SelectionKeyItem()
            {
                Key = "DifferentTravelDuration", Item = AppResources.DifferentTravelDurationQuestionAnswerLabel
            });
            TravelItems.Add(new SelectionKeyItem()
            {
                Key = "DifferentTravelRoutes", Item = AppResources.DifferentTravelRoutesQuestionAnswerLabel
            });

            PhoneItems.Add(new SelectionKeyItem()
            {
                Key = "TRUE", Item = AppResources.YesQuestionAnswerLabel
            });
            PhoneItems.Add(new SelectionKeyItem()
            {
                Key = "FALSE", Item = AppResources.NoQuestionAnswerLabel
            });
        }
Exemple #2
0
        public bool Validate(CustomValidationService service)
        {
            ValidationErrors = new SerializableDictionary <string, string>();

            if ((PhoneItems == null || PhoneItems.Count < 1) &&
                (InternetItems == null || InternetItems.Count < 1) &&
                (VideoItems == null || VideoItems.Count < 1))
            {
                ValidationErrors.Add(LambdaHelper <Location> .GetPropertyName(x => x.PhoneItems), "Location.PhoneItems is a mandatory field.");
                ValidationErrors.Add(LambdaHelper <Location> .GetPropertyName(x => x.InternetItems), "Location.InternetItems is a mandatory field.");
                ValidationErrors.Add(LambdaHelper <Location> .GetPropertyName(x => x.VideoItems), "Location.VideoItems is a mandatory field.");
            }

            if (PhoneItems != null && PhoneItems.Any())
            {
                foreach (var item in PhoneItems)
                {
                    if (item.Validate(service))
                    {
                        foreach (var validationError in item.ValidationErrors)
                        {
                            if (!ValidationErrors.ContainsKey(validationError.Key))
                            {
                                ValidationErrors.Add(validationError.Key, validationError.Value);
                            }
                        }
                    }
                }
            }

            if (InternetItems != null)
            {
                if (InternetItems != null && InternetItems.Any())
                {
                    foreach (var item in InternetItems)
                    {
                        if (item.Validate(service))
                        {
                            foreach (var validationError in item.ValidationErrors)
                            {
                                if (!ValidationErrors.ContainsKey(validationError.Key))
                                {
                                    ValidationErrors.Add(validationError.Key, validationError.Value);
                                }
                            }
                        }
                    }
                }
            }

            if (VideoItems != null)
            {
                if (VideoItems != null && VideoItems.Any())
                {
                    foreach (var item in VideoItems)
                    {
                        if (item.Validate(service))
                        {
                            foreach (var validationError in item.ValidationErrors)
                            {
                                if (!ValidationErrors.ContainsKey(validationError.Key))
                                {
                                    ValidationErrors.Add(validationError.Key, validationError.Value);
                                }
                            }
                        }
                    }
                }
            }

            if (Address == null)
            {
                ValidationErrors.Add(LambdaHelper <Location> .GetPropertyName(x => x.Address), "Location.Address is a mandatory field.");
            }
            else
            {
                if (Address.Validate())
                {
                    foreach (var validationError in Address.ValidationErrors)
                    {
                        if (!ValidationErrors.ContainsKey(validationError.Key))
                        {
                            ValidationErrors.Add(validationError.Key, validationError.Value);
                        }
                    }
                }
            }

            return(ValidationErrors.Count > 0);
        }