protected override void OnFormBound()
    {
        base.OnFormBound();

        if (IsActivating)
        {
            ResetForm();
            SetValuesFromEntityHistory();
            ClientBindingMgr.SetFocusTo(rbContact);
        }

        btnContinue.Enabled    = NewUnscheduledActivity.Checked;
        OpenActivities.Visible = false;

        if (CompleteScheduledActivity.Checked)
        {
            LookupControl lookup = GetBoundLookup();
            Session["entityName"] = lookup != null ? lookup.LookupEntityName : null;
            Session["entityId"]   = lookup != null?GetId(lookup.LookupResultValue) : null;

            OpenActivities.DataBind();
            OpenActivities.Visible = OpenActivities.Rows.Count > 0;
        }
        if (Account.LookupResultValue != null)
        {
            SetSeedValues();
        }
        if (LeadId.LookupResultValue == null)
        {
            Company.Text = string.Empty;
        }
    }
    protected override void OnFormBound()
    {
        base.OnFormBound();

        if (IsActivating)
        {
            ResetForm();
            SetValuesFromEntityHistory();
            ClientBindingMgr.SetFocusTo(rbContact);
        }

        btnContinue.Enabled = NewUnscheduledActivity.Checked;
        divResults.Visible  = false;

        if (CompleteScheduledActivity.Checked)
        {
            LookupControl lookup = GetBoundLookup();
            Session["entityName"] = lookup != null ? lookup.LookupEntityName : null;
            Session["entityId"]   = lookup != null?GetId(lookup.LookupResultValue) : null;

            OpenActivities.DataBind();
            divResults.Visible = true;
        }
        if (Account.LookupResultValue != null)
        {
            SetSeedValues();
        }
        if (LeadId.LookupResultValue == null)
        {
            Company.Text = string.Empty;
        }

        ScriptManager.RegisterClientScriptInclude(this, GetType(), "ScheduleCompleteActivity", Page.ResolveUrl("~/SmartParts/Activity/ScheduleCompleteActivity.js"));
        var script = new StringBuilder();

        if (Page.IsPostBack)
        {
            script.Append(" Sage.UI.Forms.ScheduleCompleteActivity.init(" + GetWorkSpace() + " );");
        }
        else
        {
            script.Append("require(['dojo/ready'], function(ready) { " +
                          "ready(function () { Sage.UI.Forms.ScheduleCompleteActivity.init(" + GetWorkSpace() + "); }); " +
                          "});");
        }
        ScriptManager.RegisterStartupScript(this, GetType(), "initialize_ScheduleCompleteActivity", script.ToString(), true);
    }
        public async void CloseActivity(UserActivityViewModel document)
        {
            // TODO: Check if not saved
            int index = OpenActivities.IndexOf(document);

            if (index != -1)
            {
                OpenActivities.RemoveAt(index);

                if (index < OpenActivities.Count)
                {
                    CurrentActivity = OpenActivities[index];
                }
                else
                {
                    CurrentActivity = OpenActivities.LastOrDefault();
                }

                if (document.Token != null)
                {
                    await SaveFileTokensAsync();
                }
            }
        }
 private void NewActivity()
 {
     AddActivity(CreateNewActivity());
     CurrentActivity = OpenActivities.Last();
 }
 private async Task SaveFileTokensAsync()
 {
     await Settings.SaveFileTokensAsync(OpenActivities.Select(i => i.Token));
 }
        private async Task LoadFilesAsync()
        {
            OpenActivities.Clear();

            var tokens = await Settings.GetFileTokensAsync();

            var documents = new List <UserActivityViewModel>();

            foreach (string token in tokens)
            {
                try
                {
                    StorageFile file;
                    bool        isSaveable = false;
                    if (token.StartsWith("SampleFile:"))
                    {
                        string fileName = token.Substring("SampleFile:".Length);
                        file = await StorageFile.GetFileFromApplicationUriAsync(new Uri($"ms-appx:///{SamplesFolderName}/{fileName}"));
                    }
                    else
                    {
                        file = await StorageApplicationPermissions.FutureAccessList.GetFileAsync(token);

                        isSaveable = true;
                    }

                    if (file != null)
                    {
                        documents.Add(await LoadFromFileAsync(file, token, isSaveable));
                    }
                }
                catch { }
            }

            try
            {
                var samplesFolder = await Package.Current.InstalledLocation.GetFolderAsync(SamplesFolderName);

                foreach (var file in await samplesFolder.GetFilesAsync())
                {
                    if (file.FileType.ToLower().Equals(".json"))
                    {
                        AddActivityItems.Add(new AddUserActivityListItem()
                        {
                            DisplayName = file.Name,
                            File        = file
                        });
                    }
                }
            }
            catch { }

            foreach (var doc in documents)
            {
                AddActivity(doc);
            }

            var currDoc = documents.FirstOrDefault(i => i.Token == _currentActivityToken.Value);

            if (currDoc == null)
            {
                currDoc = documents.FirstOrDefault();
            }

            CurrentActivity = currDoc;
        }
 private void AddActivity(UserActivityViewModel doc)
 {
     OpenActivities.Add(doc);
     doc.OnRequestClose          += Doc_OnRequestClose;
     doc.OnRequestSaveFileTokens += Doc_OnRequestSaveFileTokens;
 }
 private async void AddAndSelectActivity(UserActivityViewModel doc)
 {
     AddActivity(doc);
     CurrentActivity = OpenActivities.LastOrDefault();
     await SaveFileTokensAsync();
 }