Exemplo n.º 1
0
        /// <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
                        }
                    }
                };
            }));
        }