private void UpdateLinks(SNProfile instance, SNProfileDTO profileDTO, out List <SNLink> outLinks) { outLinks = new List <SNLink>(); var model = this.SNLinkModel; var listToDelete = instance.Links.ToList(); var links = profileDTO.links.Any(x => x.snLinkId != 0) ? model.GetAllByIds(profileDTO.links.Where(x => x.snLinkId != 0).Select(x => x.snLinkId).ToList()).ToList() : new List <SNLink>(); foreach (var link in profileDTO.links) { var linkInstance = links.FirstOrDefault(x => x.Id == link.snLinkId) ?? new SNLink(); linkInstance.LinkName = link.linkName; linkInstance.LinkValue = link.linkValue; if (!linkInstance.IsTransient() && listToDelete.Any(x => x.Id == linkInstance.Id)) { listToDelete.Remove(listToDelete.First(x => x.Id == linkInstance.Id)); } outLinks.Add(linkInstance); } foreach (var link in listToDelete) { model.RegisterDelete(link); } }
private void UpdateServices(SNProfile instance, SNProfileDTO profileDTO, out List <SNProfileSNService> outServices) { outServices = new List <SNProfileSNService>(); var model = this.SNProfileSNServiceModel; var serviceModel = this.SNServiceModel; var entities = profileDTO.services.Any(x => x.snProfileSNServiceId != 0) ? model.GetAllByIds(profileDTO.services.Where(x => x.snProfileSNServiceId != 0).Select(x => x.snProfileSNServiceId).ToList()).ToList() : new List <SNProfileSNService>(); var services = serviceModel.GetAllByIds(profileDTO.services.Where(x => x.snServiceId != 0).Select(x => x.snServiceId).ToList()).ToList(); var listToDelete = instance.Services.ToList(); foreach (var service in profileDTO.services) { SNService serviceInstance; if ((serviceInstance = services.FirstOrDefault(x => x.Id == service.snServiceId)) != null) { var entity = entities.FirstOrDefault(x => x.Id == service.snProfileSNServiceId) ?? new SNProfileSNService(); entity.IsEnabled = service.isEnabled; entity.Service = serviceInstance; entity.ServiceUrl = service.serviceUrl; if (!entity.IsTransient() && listToDelete.Any(x => x.Id == entity.Id)) { listToDelete.Remove(listToDelete.First(x => x.Id == entity.Id)); } outServices.Add(entity); } } foreach (var service in listToDelete) { model.RegisterDelete(service); } }
private SNProfile ConvertDto(SNProfileDTO profileDTO, SNProfile instance, out List <SNLink> links, out List <SNProfileSNService> services) { instance = instance ?? new SNProfile(); instance.ProfileName = profileDTO.profileName; instance.UserName = profileDTO.userName; instance.JobTitle = profileDTO.jobTitle; instance.Email = profileDTO.email; instance.Phone = profileDTO.phone; instance.About = profileDTO.about; instance.SubModuleItem = this.SubModuleItemModel.GetOneById(profileDTO.subModuleItemId).Value; instance.MapSettings = this.UpdateMapSettings(instance, profileDTO); if (profileDTO.addressVO != null) { instance.Address = instance.Address ?? new Address(); var addressVo = profileDTO.addressVO; instance.Address.Address1 = addressVo.address1; instance.Address.Address2 = addressVo.address2; instance.Address.City = addressVo.city; if (instance.Address.IsTransient()) { instance.Address.DateCreated = DateTime.Now; } instance.Address.DateModified = DateTime.Now; instance.Address.Latitude = addressVo.latitude; instance.Address.Longitude = addressVo.longitude; instance.Address.Country = addressVo.countryId.HasValue ? this.CountryModel.GetOneById(addressVo.countryId.Value).Value : null; instance.Address.State = addressVo.stateId.HasValue ? this.StateModel.GetOneById(addressVo.stateId.Value).Value : null; instance.Address.Zip = addressVo.zip; this.AddressModel.RegisterSave(instance.Address); } links = new List <SNLink>(); if (profileDTO.links != null) { this.UpdateLinks(instance, profileDTO, out links); } services = new List <SNProfileSNService>(); if (profileDTO.services != null) { this.UpdateServices(instance, profileDTO, out services); } return(instance); }
private void SaveLinks(List <SNLink> links, SNProfile instance) { if (links.Any()) { var linksModel = this.SNLinkModel; foreach (var link in links) { link.Profile = instance; linksModel.RegisterSave(link); } linksModel.Flush(); } }
private void SaveServices(List <SNProfileSNService> services, SNProfile instance) { if (services.Any()) { var servicesModel = this.SNProfileSNServiceModel; foreach (var service in services) { service.Profile = instance; servicesModel.RegisterSave(service); } servicesModel.Flush(); } }
private SNMapSettings UpdateMapSettings(SNProfile instance, SNProfileDTO sessionDTO) { if (sessionDTO.mapSettingsVO != null) { var mapSettingsVo = sessionDTO.mapSettingsVO; var mapSettings = instance.MapSettings ?? new SNMapSettings(); mapSettings.Country = mapSettingsVo.countryId.HasValue ? this.CountryModel.GetOneById(mapSettingsVo.countryId.Value).Value : null; mapSettings.MapProvider = mapSettingsVo.snMapProviderId.HasValue ? this.SNMapProviderModel.GetOneById(mapSettingsVo.snMapProviderId.Value).Value : null; mapSettings.ZoomLevel = mapSettingsVo.zoomLevel; this.SNMapSettingsModel.RegisterSave(mapSettings); return(mapSettings); } return(null); }
// ReSharper restore ImplicitlyCapturedClosure /// <summary> /// The get profile sub module items by user id. /// </summary> /// <param name="userId"> /// The user id. /// </param> /// <returns> /// The <see cref="IEnumerable{SubModuleItemDTO}"/>. /// </returns> public IEnumerable <SubModuleItemDTO> GetSNProfileSubModuleItemsByUserId(int userId) { SubModuleItemFromStoredProcedureDTO dto = null; SubModuleItem smi = null; SubModuleCategory smc = null; SNProfile survey = null; SubModuleItemTheme theme = null; var queryOver = new DefaultQueryOver <SubModuleItem, int>().GetQueryOver(() => smi) .JoinQueryOver(x => x.SubModuleCategory, () => smc) .JoinQueryOver(() => smi.SNProfiles, () => survey) .JoinQueryOver(() => smi.Themes, () => theme, JoinType.LeftOuterJoin) .Where(() => smi.CreatedBy != null && smi.CreatedBy.Id == userId && smc.User != null && smc.User.Id == userId) .SelectList(res => res.Select(() => smi.CreatedBy.Id) .WithAlias(() => dto.createdBy) .Select(() => smi.Id) .WithAlias(() => dto.subModuleItemId) .Select(() => smc.SubModule.Id) .WithAlias(() => dto.subModuleId) .Select(() => smi.SubModuleCategory.Id) .WithAlias(() => dto.subModuleCategoryId) .Select(() => smi.IsShared) .WithAlias(() => dto.isShared) .Select(() => smi.ModifiedBy.Id) .WithAlias(() => dto.modifiedBy) .Select(() => smi.DateCreated) .WithAlias(() => dto.dateCreated) .Select(() => smi.DateModified) .WithAlias(() => dto.dateModified) .Select(() => smi.IsActive) .WithAlias(() => dto.isActive) .Select(() => theme.Id) .WithAlias(() => dto.themeId)) .TransformUsing(Transformers.AliasToBean <SubModuleItemFromStoredProcedureDTO>()); var result = this.Repository.FindAll <SubModuleItemFromStoredProcedureDTO>(queryOver).ToList() .Select(x => new SubModuleItemDTO(x)) .ToList(); var themeIds = result.Where(x => x.themeId.HasValue).Select(x => x.themeId.Value).ToList(); var themeQuery = new DefaultQueryOver <SubModuleItemTheme, int>().GetQueryOver().WhereRestrictionOn(x => x.Id).IsIn(themeIds); var themes = this.themeRepository.FindAll(themeQuery).ToList(); result.ForEach(x => x.themeVO = x.themeId.HasValue ? themes.FirstOrDefault(t => t.Id == x.themeId).Return(tt => new SubModuleItemThemeDTO(tt), null) : null); return(result); }
/// <summary> /// Initializes a new instance of the <see cref="SNProfileDTO"/> class. /// </summary> /// <param name="profile"> /// The SN profile. /// </param> public SNProfileDTO(SNProfile profile) { if (profile != null) { this.snProfileId = profile.Id; this.about = profile.About; this.addressVO = profile.Address == null ? null : new AddressDTO(profile.Address); this.email = profile.Email; this.links = profile.Links.Select(x => new SNLinkDTO(x)).ToArray(); this.services = profile.Services.Select(x => new SNProfileSNServiceDTO(x)).ToArray(); this.profileName = profile.ProfileName; this.userName = profile.UserName; this.jobTitle = profile.JobTitle; this.phone = profile.Phone; this.mapSettingsVO = profile.MapSettings == null ? null : new SNMapSettingsDTO(profile.MapSettings); this.subModuleItemId = profile.SubModuleItem.With(x => x.Id); this.dateModified = profile.SubModuleItem.With(x => x.DateModified).ConvertToUnixTimestamp(); } }