private void ProcessResults(WaitableTask <EncounterStatus> result,
                                    TaskResult <string> fileText, EncounterBasicStatus basicStatus)
        {
            EncounterContentStatus detailedStatus = (fileText.IsError()) ? new EncounterContentStatus() : parser.Deserialize(fileText.Value);
            var status = new EncounterStatus(basicStatus, detailedStatus);

            result.SetResult(status);
        }
        public EncounterStatus(EncounterBasicStatus basicStatus, EncounterContentStatus contentStatus)
        {
            if (basicStatus == null)
            {
                basicStatus = new EncounterBasicStatus();
            }
            if (contentStatus == null)
            {
                contentStatus = new EncounterContentStatus();
            }

            BasicStatus   = basicStatus;
            ContentStatus = contentStatus;
        }
        public WaitableTask <EncounterStatus> GetDetailedStatus(User user,
                                                                EncounterMetadata metadata, EncounterBasicStatus basicStatus)
        {
            var detailedStatus = new WaitableTask <EncounterStatus>();

            var fileText = fileManager.GetFileText(user, FileType.DetailedStatus, metadata);

            fileText.AddOnCompletedListener((result) => ProcessResults(detailedStatus, result, basicStatus));

            return(detailedStatus);
        }