internal IFacadeUpdateResult <ReferenceData> SaveReferenceLanguageBasic(ReferenceData dto, object languageId) { ArgumentValidator.IsNotNull("dto", dto); ArgumentValidator.IsNotNull("languageId", languageId); FacadeUpdateResult <ReferenceData> result = new FacadeUpdateResult <ReferenceData>(); IReferenceService service = UnitOfWork.GetService <IReferenceService>(); Reference instance = RetrieveOrNew <ReferenceData, Reference, IReferenceService>(result.ValidationResult, dto.Id); if (result.IsSuccessful) { instance.ModifiedDate = DateTime.Now; // Check existence of current language ReferenceLanguage referenceLanguage = instance.ReferenceLanguages.FirstOrDefault(o => object.Equals(o.LanguageId, languageId)); if (referenceLanguage == null) { referenceLanguage = instance.ReferenceLanguages.AddNewBo(); referenceLanguage.LanguageId = languageId; } referenceLanguage.Title = dto.Title; referenceLanguage.Description = dto.Description; referenceLanguage.Keywords = dto.Keywords; var saveQuery = service.Save(instance); result.AttachResult(instance.RetrieveData <ReferenceData>()); result.Merge(saveQuery); } return(result); }
private T CreateOrDuplicateMaterial <T>(Reference _ref, ReferenceSet referenceSet) where T : Material, new() { Material mat = ((T)_ref.Material).CloneThis(); mat.MaterialClassification = Session.Query <MaterialClassification>().SingleOrDefault(x => x.Code == "CREF"); Session.Save(mat); Reference newRef = new Reference() { Material = mat, ReferenceSet = referenceSet }; Session.Save(newRef); foreach (ReferenceLanguage rl in _ref.ReferenceLanguages) { ReferenceLanguage newRefLang = new ReferenceLanguage() { Reference = newRef, Language = rl.Language }; Session.Save(newRefLang); newRef.ReferenceLanguages.Add(newRefLang); Session.Save(newRef); } referenceSet.References.Add(newRef); Session.Save(referenceSet); return((T)mat); }