/// <summary>
        /// Uploads photo asynchronous.
        /// </summary>
        /// <param name="personType">The person type.</param>
        /// <param name="photo">The byte array of photo.</param>
        /// <param name="personId">Person Id.</param>
        /// <param name="personEvent">The person event.</param>
        /// <returns>
        /// Upload media Items.
        /// </returns>
        public async Task<string> UploadPhotosAsync(PersonType personType, byte[] photo, string personId, PersonEvent personEvent)
        {
            string fileName = string.Format("{0}{1}", personId, CommonConstants.ImageFormat);

            var mediaAddress = await this.GetBaseAddress(personType);
            var uploadedUrl = await this.imageMediaClient.UploadAsync(mediaAddress, photo, fileName);

            string personTypeValue = personType.RetrievePersonTypeFilterValue();

            if (uploadedUrl != null)
            {
                await this.personsClient.UpdateImageAsync(personId, personTypeValue, uploadedUrl, JsonConvert.SerializeObject(personEvent), true);
            }
            else
            {
                return await Task.FromResult(CommonConstants.Failed);
            }

            return await Task.FromResult(CommonConstants.Success);
        }
 /// <summary>
 /// Retrieves the person event asynchronous.
 /// </summary>
 /// <param name="dateTime">The date time.</param>
 /// <param name="personId">The person identifier.</param>
 /// <param name="personType">The person type.</param>
 /// <returns>The person events.</returns>
 public async Task<EventHistory> RetrievePersonHistoryAsync(string dateTime, string personId, PersonType personType)
 {
     var workstation = DIContainer.Instance.Resolve<Workstation>();
     string personTypeValue = personType.RetrievePersonTypeFilterValue();
     var task = await this.personsClient.RetrievePersonEventAsync(shipId: workstation.Ship.ShipId, dateTime: dateTime, personId: personId, personType: personTypeValue);
     ListResult<EventHistory> eventData = task != null ? JsonConvert.DeserializeObject<ListResult<EventHistory>>(task) : default(ListResult<EventHistory>);
     var data = eventData != null ? eventData.Items.FirstOrDefault() : new EventHistory();
     return await Task.FromResult(data);
 }