Contract for returning the result of a data operation
        /// <summary>
        /// Delete a data message
        /// </summary>
        /// <param name="dataMessage">ClientDataMessage object</param>
        /// <returns>Result of the operation as DataSourceOperationResult object</returns>
        public DataSourceOperationResult Delete(ClientDataMessage dataMessage)
        {
            DataSourceOperationResult result = new DataSourceOperationResult();

            try
            {
                if (File.Exists(dataMessage.FullPath))
                {
                    File.Delete(dataMessage.FullPath);
                }

                result.InfoMessage  = string.Format("File {0} deleted successfully.", dataMessage.FullPath);
                result.IsSuccessful = true;
            }
            catch (Exception _ex)
            {
                result.ExceptionData = _ex;
            }

            return(result);
        }
        /// <summary>
        /// Create data file
        /// </summary>
        /// <param name="sourceStream">Source stream</param>
        /// <param name="targetDataMessage">Target data message</param>
        public DataSourceOperationResult Create(Stream sourceStream, ClientDataMessage targetDataMessage)
        {
            DataSourceOperationResult result = new DataSourceOperationResult();

            try
            {
                using (var fileStream = File.Create(targetDataMessage.FullPath))
                {
                    sourceStream.Seek(0, SeekOrigin.Begin);
                    sourceStream.CopyTo(fileStream);

                    result.InfoMessage  = string.Format("File {0} copied successfully.", targetDataMessage.FullPath);
                    result.IsSuccessful = true;
                }
            }
            catch (Exception _ex)
            {
                result.InfoMessage   = "Error moving file: " + targetDataMessage.FullPath + ". Error: " + _ex.Message;
                result.ExceptionData = _ex;
            }

            return(result);
        }