Ejemplo n.º 1
0
 internal WriteBackResponse(IWriteBackDataSet DataSet, string Filename, DateTime Age, bool IsSuccess, string Message, IEnumerable<IWriteBackResponseRecord> Records)
 {
     this.DataSet = DataSet;
     this.Filename = Filename;
     this.Age = Age;
     this.IsSuccess = IsSuccess;
     this.Message = Message;
     this.Records = Records;
 }
Ejemplo n.º 2
0
        public static WriteBackResponse Create(WriteBackContext Context, IWriteBackDataSet DataSet)
        {
            // no response if the directory doesn't exit
            if (!Directory.Exists(Context.WriteBackResponsesDirectory))
                return null;

            var prefixPattern = $"{Context.EduHubContext.EduHubSiteIdentifier}_{DataSet.Name}.*";

            var latestResponse = Directory.GetFiles(Context.WriteBackResponsesDirectory, prefixPattern)
                .Where(p =>
                    p.EndsWith(".RESPONSE-SUCCESS", StringComparison.OrdinalIgnoreCase) ||
                    p.EndsWith(".RESPONSE-ERROR", StringComparison.OrdinalIgnoreCase))
                .Select(p => new
                {
                    path = p,
                    age = File.GetCreationTime(p),
                })
                .OrderByDescending(p => p.age)
                .FirstOrDefault();

            // no response
            if (latestResponse == null)
                return null;

            var isSuccess = latestResponse.path.EndsWith(".RESPONSE-SUCCESS", StringComparison.OrdinalIgnoreCase);
            var records = WriteBackResponseRecord.Load(latestResponse.path);

            string message;
            if (!isSuccess)
                message = "Write-Back Failed. See Records for details.";
            else if (records.Count > 0)
                message = records[0].ErrorText;
            else
                message = "Success";

            return new WriteBackResponse(DataSet, latestResponse.path, latestResponse.age, isSuccess, message, records);
        }