private void DoCreateProject()
        {
            if (!Validate())
                return;

            // if Validate is happy, create a Project to be added
            // TODO: Hard coded to Trusted System 1 for now.

            var project = new Project()
            {
                TrustedSystemId = "1",
                ProjectId = Guid.NewGuid().ToString(),
                Outcome = _projectDescription
            };

            // time to store it
            _projectService.DefineProject(project);

            // probably want to close our own ViewModel after
            // the "Add Screen" has finished with its purpose, adding stuff
            // uses the Close method on the MvxNavigatingObject base class to close our MvxViewModel.
            // Close TRIES (can't guarantee it) within the platform-specific UI View layer to close
            // the current ViewModel. // TODO more on that later, depends on how you design UI.
            // Close sends a msg to the UI Layer and asks,
            // "Can you close the View that Corresponds to this ViewModel?" and makes best effort to do it.
            // On closure the previous ViewModel on nav stack should be displayed (likely InboxViewModel)
            Close(this);
        }
Example #2
0
        // TODO: May want to do validation in here instead of ViewModel
        public void DefineProject(Project project)
        {
            _projectRepository.DefineProject(project);

            // send msg to tell others about new project
            // this can help properties in ViewModels stay updated

            _mvxMessenger.Publish(new ProjectsChangedMessage(this));
        }
        private bool ValidateProject(Project projectToValidate)
        {
            if (string.IsNullOrEmpty(projectToValidate.ProjectId))
                return false;

            if (string.IsNullOrEmpty(projectToValidate.Outcome))
                return false;

            if (string.IsNullOrEmpty(projectToValidate.TrustedSystemId))
                return false;

            return true;
        }
        private void DoSaveNewActionCommand()
        {
            // TODO: Need all the properties required for a new action.
            // TODO: Assumes you have already selected a valid projectId
            // TODO: OR you have single action project selected which means
            // TODO: I will create a NEW project/id for you and assign it to this action

            // TODO: Need better validation/error checking, etc.
            // TODO: Check, if record alreay exist with primary key guid
            // TODO: will it just save over the top of it or error?
            // TODO: For now, I am making this ViewModel go AWAY after you save it once

            // create a GTD Action to be added

            // Make sure we have an associated Project available
            string projectId;

            if (_isSingleActionProject)
            {
                var singleActionProject = new Project
                    {
                        TrustedSystemId = "1",
                        ProjectId = Guid.NewGuid().ToString(),
                        Outcome = _actionOutcome
                    };

                if (ValidateProject(singleActionProject))
                {
                    // Single-Action Project seems valid
                    // so can save it and use it
                    _projectService.DefineProject(singleActionProject);

                    projectId = singleActionProject.ProjectId;

                }
                else
                {
                    // TODO:  what exception? how to handle?
                    // return from Save method without saving for now.
                    return;
                }
            }
            else
            {
                // user picked/created their own Project so use it
                projectId = _project.ProjectId;
            }

            // TODO: Hard coded to Trusted System 1 for now.
            var nextAction = new Action()
            {
                TrustedSystemId = "1",
                ActionId = Guid.NewGuid().ToString(),
                ProjectId = projectId,
                Outcome = _actionOutcome
            };

            // if Validate is happy, save it
            if (!ValidateAction())
                return;

            // validation of the Action was good
            _actionService.DefineAction(nextAction);

            // probably want to close our own ViewModel after
            // the "Add Screen" has finished with its purpose, adding the new Action
            // uses the Close method on the MvxNavigatingObject base class to close our MvxViewModel.
            // Close TRIES (can't guarantee it) within the platform-specific UI View layer to close
            // the current ViewModel. // TODO more on that later, depends on how you design UI.
            // Close sends a msg to the UI Layer and asks,
            // "Can you close the View that Corresponds to this ViewModel?" and makes best effort to do it.
            // On closure the previous ViewModel on nav stack should be displayed (likely InboxViewModel)

            // for now we will just delete stuff from the inbox if it
            // was successfully converted to an Action

            _inboxService.TrashStuff(ItemOfStuff);

            Close(this);
        }
 public void DefineProject(Project project)
 {
     _sqlConnection.Insert(project);
 }