internal static PreservationScheduleArchive Convert(this BibDSModel.PreservationScheduleArchive sch, int level = 0, int deeplevel = 5)
        {
            if (sch == null || level > deeplevel)
            {
                return(null);
            }

            return(new PreservationScheduleArchive
            {
                IdArchive = sch.IdArchive,
                IdSchedule = sch.IdPreservationSchedule,
                CreatedDate = sch.CreatedDate,
                ModifiedDate = sch.ModifiedDate,
                Schedule = (sch.PreservationSchedule != null) ? sch.PreservationSchedule.Convert(level + 1, deeplevel) : null,
                Archive = (sch.Archive != null) ? sch.Archive.Convert(level + 1, deeplevel) : null,
            });
        }
        public Obj.PreservationScheduleArchive AddPreservationScheduleArchive(Obj.PreservationScheduleArchive toAdd)
        {
            if (toAdd == null)
            {
                throw new Exception("AddPreservationScheduleArchive - nessun parametro passato");
            }

            if (toAdd.Archive == null)
            {
                if (toAdd.IdArchive == Guid.Empty)
                {
                    throw new Exception("AddPreservationScheduleArchive - archivio non passato");
                }
                toAdd.Archive = new Obj.DocumentArchive(toAdd.IdArchive);
            }

            if (toAdd.Schedule == null)
            {
                if (toAdd.IdSchedule == Guid.Empty)
                {
                    throw new Exception("AddPreservationScheduleArchive - nessuno scadenziario passato");
                }
                toAdd.Schedule = new Obj.PreservationSchedule {
                    IdPreservationSchedule = toAdd.IdSchedule
                };
            }

            Obj.PreservationScheduleArchive retval = null;
            Guid idArchive = toAdd.Archive.IdArchive, idSchedule = toAdd.Schedule.IdPreservationSchedule;

            try
            {
                var entity = db.PreservationScheduleArchive
                             .SingleOrDefault <Model.PreservationScheduleArchive>(x => x.IdArchive == idArchive);

                if (entity != null)
                {
                    entity.IdPreservationSchedule = idSchedule;
                    entity.IsActive     = true;
                    entity.ModifiedDate = DateTime.Now;
                }
                else
                {
                    entity = new Model.PreservationScheduleArchive
                    {
                        IdArchive = idArchive,
                        IdPreservationSchedule = idSchedule,
                        CreatedDate            = DateTime.Now,
                        IsActive = true,
                    };

                    db.PreservationScheduleArchive.AddObject(entity);
                }

                if (requireSave)
                {
                    db.SaveChanges();
                }

                retval = entity.Convert(DEFAULT_LEVEL, DEFAULT_DEEP_LEVEL);
            }
            finally
            {
                Dispose();
            }

            return(retval);
        }