/// <summary>
 /// Initializes a new instance of an object.
 /// </summary>
 /// <param name="presentationId">Presentation Id.</param>
 /// <param name="format">Export format.</param>
 public ExportKey(int presentationId, Models.ImageExportFormat format)
 {
     PresentationId = presentationId;
     CorrelationId  = Guid.NewGuid().ToString();
     Created        = DateTime.UtcNow;
     Format         = format;
 }
        /// <summary>
        /// Tries to parse the given key.
        /// </summary>
        /// <param name="input">Input string.</param>
        /// <param name="result">Result.</param>
        /// <returns>Value indicating whether key was parsed.</returns>
        public static bool TryParse(string input, out ExportKey result)
        {
            bool ret            = false;
            long created        = 0;
            int  presentationId = -1;

            string[] components    = null;
            Guid     correlationId = Guid.Empty;

            Models.ImageExportFormat format = Models.ImageExportFormat.JPG;

            result = null;

            if (string.IsNullOrWhiteSpace(input) || string.Compare(input, "null", true) == 0)
            {
                ret = true;

                result = new ExportKey(-1, Models.ImageExportFormat.JPG)
                {
                    CorrelationId = string.Empty,
                    Created       = DateTime.MinValue
                };
            }
            else
            {
                components = input.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                if (components != null && components.Length > 3)
                {
                    if (long.TryParse(components[0], out created) && int.TryParse(components[1], out presentationId) &&
                        Guid.TryParse(components[2], out correlationId) && Enum.TryParse <Models.ImageExportFormat>(components[3], out format))
                    {
                        ret    = true;
                        result = new ExportKey(presentationId, format)
                        {
                            CorrelationId = correlationId.ToString(),
                            Created       = new DateTime(created, DateTimeKind.Utc)
                        };
                    }
                }
            }

            return(ret);
        }