/// <summary>
        /// Creates a record of contact from the potential employer.
        /// </summary>
        /// <param name="contents"></param>
        /// <param name="author"></param>
        /// <param name="received">When this contact took place.</param>
        /// <returns></returns>
        public Result <JobApplicationNote> RecordEmployerContact(string contents, string author = "", string subject = "", DateTime?received = null)
        {
            var note = new JobApplicationNote(this)
            {
                Author    = (string.IsNullOrWhiteSpace(author)) ? OrganizationName : author,
                Timestamp = received ?? DateTime.Now,
                Contents  = contents
            };

            ((List <JobApplicationNote>)Notes).Add(note);

            return(Result.Ok(note));
        }
        /// <summary>
        /// Records a note about this application.
        /// </summary>
        /// <param name="contents"></param>
        /// <returns></returns>
        public Result <JobApplicationNote> AddNote(string contents)
        {
            var note = new JobApplicationNote(this)
            {
                Author    = "self",
                Timestamp = DateTime.Now,
                Contents  = contents
            };

            ((List <JobApplicationNote>)Notes).Add(note);

            return(Result.Ok(note));
        }
        /// <summary>
        /// Adds an interview record to this job application.
        /// </summary>
        /// <param name="start"></param>
        /// <param name="interviewMedium">What medium the interview took place over. See <see cref="InterviewTypes"/> for standard mediums.</param>
        /// <param name="interviewers"></param>
        public Result <JobApplicationNote> ScheduleInterview(DateTime start, string interviewMedium, IEnumerable <string> interviewers, TimeSpan duration, string description = "")
        {
            var interview = new JobApplicationNote(this)
            {
                Timestamp = start,
                Author    = OrganizationName,
                Contents  = $"Interview<br/>Start time: ${start}<br />Duration: ${duration}<br />Medium: ${interviewMedium}<br />Interviewers: ${string.Join(',', interviewers)}",
            };

            if (!string.IsNullOrWhiteSpace(description))
            {
                interview.Contents += $"<br />{description}";
            }

            ((List <JobApplicationNote>)Notes).Add(interview);

            return(Result.Ok(interview));
        }
        public Result RemoveNote(JobApplicationNote applicationEvent)
        {
            var removed = ((List <JobApplicationNote>)Notes).Remove(applicationEvent);

            return(Result.FailIf(!removed, ""));
        }