private void DeleteWorksWritersAndChildren(Snapshot_WorksRecording recording)
        {
            var writersForRecording = _snapshotWorksWriterRepository.GetAllWritersForCloneTrackId(recording.CloneTrackId);

            foreach (var writer in writersForRecording)
            {
                //Delete all affiliation list and child if not null
                //delete affil;iatio base list
                DeleteAllAffiliationsAndChildren(writer);

                //Delete knownAs list if not null
                var knownAsAll = _snapshotKnownAsRepository.GetAllKnownAsForWriterCaeCode(writer.CloneCaeNumber);
                if (knownAsAll != null)
                {
                    foreach (var knownAs in knownAsAll)
                    {
                        _snapshotKnownAsRepository.DeleteKnownAsBySnapshotId(knownAs.SnapshotKnownAsId);
                    }
                }
                //Delete Original Publiliser list and child if not null
                DeleteOriginalPublisherSnapshotAndChildern(writer);

                //delete writer
                _snapshotWorksWriterRepository.DeleteWorksWriterSnapshotBySnapshotId(writer.SnapshotWorksWriterId);
            }
        }
        public Snapshot_WorksRecording SaveSnapshotWorksRecording(Snapshot_WorksRecording snapshotWorksRecording)
        {
            using (var context = new DataContext())
            {
                Logger.Info("Saving Snapshot recording Id: " + snapshotWorksRecording.SnapshotWorksRecodingId);
                context.Snapshot_WorksRecordings.Add(snapshotWorksRecording);
                try
                {
                    context.SaveChanges();
                }
                catch (Exception e)
                {
                    Logger.Debug(e.ToString());
                    throw new Exception(e.ToString());
                }

                return(snapshotWorksRecording);
            }
        }
        public Snapshot_WorksRecording SaveSnapshotWorksRecording(Snapshot_WorksRecording snapshotWorksRecording)
        {
            using (var context = new DataContext())
            {
                Logger.Info("CLONE TRACK ID: " + snapshotWorksRecording.CloneTrackId);
                Logger.Info("TRACK ID: " + snapshotWorksRecording.TrackId);
                context.Snapshot_WorksRecordings.Add(snapshotWorksRecording);
                try
                {
                    context.SaveChanges();
                }
                catch (Exception e)
                {
                    Logger.Debug(e.ToString());
                    throw new Exception(e.ToString());
                }

                return(snapshotWorksRecording);
            }
        }
        private List <Snapshot_WorksRecording> CastToSnapshotRecordings(List <WorksRecording> worksRecording,
                                                                        int productId, int licenseProductId)
        {
            var snapshotList = new List <Snapshot_WorksRecording>();

            foreach (var rec in worksRecording)
            {
                var snapshot = new Snapshot_WorksRecording();

                snapshot.ProductId        = productId;
                snapshot.CloneTrackId     = rec.TrackId;
                snapshot.TrackId          = rec.TrackId;
                snapshot.LicenseProductId = licenseProductId;

                snapshot.CdIndex = rec.CdIndex;
                snapshot.UmpgPercentageRollup = (int)rec.UmpgPercentageRollup;
                snapshot.CdNumber             = rec.CdNumber;
                snapshot.LicensedRollup       = (int)rec.LicensedRollup;
                if (rec.LicenseRecording != null)
                {
                    snapshot.LicenseProductRecordingId = rec.LicenseRecording.LicenseRecordingId;
                }
                // snapshot.WorkTrackId = rec.TrackId
                snapshot.Message = rec.Message;
                if (rec.Writers != null)
                {
                    snapshot.Writers = CastToSnapshotWorksWriter(rec.Writers, rec.TrackId);
                }
                if (rec.Track != null)
                {
                    snapshot.Track = CastToSnapshotWorksTrack(rec.Track, rec.TrackId);
                }
                snapshotList.Add(snapshot);
            }

            return(snapshotList);
        }