public void Save(UserAgent userAgent) { using (var db = GetDbContext()) { UserAgentEntity dbUserAgent = null; if (userAgent.Id != Guid.Empty) { dbUserAgent = db.UserAgents .Include(ua => ua.OrderedProfiles) .SingleOrDefault(a => a.Id == userAgent.Id); } if (dbUserAgent == null) { dbUserAgent = new UserAgentEntity() { Id = Guid.NewGuid(), CreatedBy = userAgent.CreatedBy, CreatedOn = DateTime.UtcNow }; userAgent.Id = dbUserAgent.Id; userAgent.CreatedOn = dbUserAgent.CreatedOn; db.UserAgents.Add(dbUserAgent); } if (dbUserAgent.OrderedProfiles != null) { dbUserAgent.OrderedProfiles.Clear(); } dbUserAgent.Ax = userAgent.Ax; dbUserAgent.Height = userAgent.Height; dbUserAgent.Identifier = userAgent.Identifier; dbUserAgent.Image = userAgent.Image; dbUserAgent.Name = userAgent.Name; dbUserAgent.Width = userAgent.Width; dbUserAgent.MatchType = userAgent.MatchType; dbUserAgent.UpdatedBy = userAgent.UpdatedBy; dbUserAgent.UpdatedOn = DateTime.UtcNow; dbUserAgent.Api = userAgent.Api; dbUserAgent.Lines = userAgent.Lines; dbUserAgent.Inputs = userAgent.Inputs; dbUserAgent.MaxInputDb = userAgent.InputMaxDb; dbUserAgent.MinInputDb = userAgent.InputMinDb; dbUserAgent.UserInterfaceLink = userAgent.UserInterfaceLink; dbUserAgent.Comment = userAgent.Comment; dbUserAgent.InputGainStep = userAgent.InputGainStep; dbUserAgent.GpoNames = userAgent.GpoNames; dbUserAgent.UserInterfaceIsOpen = userAgent.UserInterfaceIsOpen; dbUserAgent.UseScrollbars = userAgent.UseScrollbars; userAgent.UpdatedOn = dbUserAgent.UpdatedOn; GetProfileEntitiesFromProfiles(db, dbUserAgent, userAgent.Profiles); GetDbCodecPresetsFromCodecPresets(db, dbUserAgent, userAgent.CodecPresets); db.SaveChanges(); } }
private void GetProfileEntitiesFromProfiles(CcmDbContext db, UserAgentEntity userAgent, IEnumerable <Profile> profiles) { userAgent.OrderedProfiles = userAgent.OrderedProfiles ?? new Collection <UserAgentProfileOrderEntity>(); userAgent.OrderedProfiles.Clear(); int sortIndex = 0; foreach (Profile profile in profiles) { var dbProfile = db.Profiles.SingleOrDefault(p => p.Id == profile.Id); if (dbProfile == null) { continue; } userAgent.OrderedProfiles.Add(new UserAgentProfileOrderEntity() { Profile = dbProfile, UserAgent = userAgent, SortIndex = sortIndex }); sortIndex++; } }
private UserAgent MapToUserAgent(UserAgentEntity dbUserAgent) { return(new UserAgent() { Ax = dbUserAgent.Ax, UserInterfaceLink = dbUserAgent.UserInterfaceLink, Height = dbUserAgent.Height, Id = dbUserAgent.Id, Identifier = dbUserAgent.Identifier, Image = dbUserAgent.Image, Name = dbUserAgent.Name, Width = dbUserAgent.Width, MatchType = dbUserAgent.MatchType, CreatedBy = dbUserAgent.CreatedBy, CreatedOn = dbUserAgent.CreatedOn, UpdatedBy = dbUserAgent.UpdatedBy, UpdatedOn = dbUserAgent.UpdatedOn, Api = dbUserAgent.Api, Lines = dbUserAgent.Lines, Inputs = dbUserAgent.Inputs, InputMaxDb = dbUserAgent.MaxInputDb, InputMinDb = dbUserAgent.MinInputDb, Comment = dbUserAgent.Comment, InputGainStep = dbUserAgent.InputGainStep, GpoNames = dbUserAgent.GpoNames, UserInterfaceIsOpen = dbUserAgent.UserInterfaceIsOpen, UseScrollbars = dbUserAgent.UseScrollbars, Profiles = GetProfilesFromProfiles(dbUserAgent.OrderedProfiles), CodecPresets = dbUserAgent.CodecPresets.Select(MapToCodecPreset).ToList() }); }
private void GetDbCodecPresetsFromCodecPresets(CcmDbContext db, UserAgentEntity userAgent, IEnumerable <CodecPreset> codecPresets) { userAgent.CodecPresets = userAgent.CodecPresets ?? new Collection <CodecPresetEntity>(); userAgent.CodecPresets.Clear(); foreach (var codecPreset in codecPresets) { var dbCodecPreset = db.CodecPresets.SingleOrDefault(c => c.Id == codecPreset.Id); if (dbCodecPreset == null) { continue; } userAgent.CodecPresets.Add(dbCodecPreset); } }
private static UserAgent MapToUserAgent(UserAgentEntity userAgent) { return(userAgent == null ? null : new UserAgent() { Ax = userAgent.Ax, Height = userAgent.Height, Id = userAgent.Id, Identifier = userAgent.Identifier, Image = userAgent.Image, MatchType = userAgent.MatchType, Name = userAgent.Name, UserInterfaceLink = userAgent.UserInterfaceLink, Width = userAgent.Width, Api = userAgent.Api, Lines = userAgent.Lines, Inputs = userAgent.Inputs, InputMinDb = userAgent.MinInputDb, InputMaxDb = userAgent.MaxInputDb, Comment = userAgent.Comment }); }