/// <summary> /// Splits the records. /// </summary> /// <param name="request">The request.</param> /// <returns></returns> public SplitRecordsResponse SplitRecords(SplitRecordsRequest request) { return(TryCatchThrowFault(() => { CheckCredentials(request.Credentials); string module = request.OriginalRecord.Module.ToString(); CheckReportingPoint(module, request.OriginalRecord.Location); Dictionary <int, InMemoryRecord> database = amplaDatabase.GetModuleRecords(module); InMemoryRecord record = FindRecord(database, request.OriginalRecord.Location, request.OriginalRecord.Module, (int)request.OriginalRecord.SetId); InMemoryRecord[] splitRecords = record.SplitRecord(request.SplitRecords[0].SplitDateTimeUtc); int newSetId = amplaDatabase.GetNewSetId(module); splitRecords[1].RecordId = newSetId; database[splitRecords[0].RecordId] = splitRecords[0]; database[splitRecords[1].RecordId] = splitRecords[1]; return new SplitRecordsResponse { Context = new SplitRecordsResponseContext { OriginalRecord = request.OriginalRecord }, SplitRecordResults = new[] { new SplitRecordResult { StartDateTimeUtc = splitRecords[0].GetFieldValue("Start Time", DateTime.MinValue), EndDateTimeUtc = splitRecords[0].GetFieldValue("End Time", DateTime.MinValue), SetId = splitRecords[0].RecordId } } }; })); }