public override void SetMasters(Movement obj, Peremeshchenie dobj, List <string> attrs, IDataService defDS, IDataService syncDS, Source source, ref List <DataObject> arrToUpd, ref Dictionary <string, List <DataObject> > arrConformity) { var status = dobj.GetStatus(); if (obj.DepatureAddress != null && (status == ObjectStatus.Created || attrs != null && attrs.Contains(Movement.ConstDepatureAddress))) { var address = Helper.GetProzhivanie(obj.DepatureAddress, defDS, syncDS, source, ref arrToUpd, ref arrConformity); var adr = new Prozhivanie(); adr.SetExistObjectPrimaryKey(address.__PrimaryKey); adr.SetStatus(ObjectStatus.UnAltered); dobj.AdresUbytiia = adr; } if (obj.MovementCause != null && (status == ObjectStatus.Created || attrs != null && attrs.Contains(Movement.ConstMovementCause))) { var val = new PrichinaPeremeshcheniia(); val.SetExistObjectPrimaryKey(obj.MovementCause.Guid); defDS.LoadObject(val); dobj.PrichinaPeremeshcheniia = val; } if (status == ObjectStatus.Created || attrs != null && attrs.Contains(Movement.ConstBeneficiary)) { var leechnost = (Leechnost)MapperHelper.GetMaster(typeof(Leechnost), obj.Beneficiary.Guid, defDS.Query <Leechnost>(Leechnost.Views.LeechnostE), syncDS, source, ref arrToUpd, ref arrConformity); dobj.Leechnost = leechnost; } }
public override void SetMasters(Beneficiary beneficiary, Leechnost dest, List <string> attrs, IDataService defDS, IDataService syncDS, Source source, ref List <DataObject> arrToUpd, ref Dictionary <string, List <DataObject> > arrConformity) { var status = dest.GetStatus(); if (beneficiary.Location != null && (status == ObjectStatus.Created || attrs != null && attrs.Contains(Beneficiary.ConstLocation))) { var prozivanie = Helper.GetProzhivanie(beneficiary.Location, defDS, syncDS, source, ref arrToUpd, ref arrConformity); var address = new Prozhivanie(); address.SetExistObjectPrimaryKey(prozivanie.__PrimaryKey); address.SetStatus(ObjectStatus.UnAltered); dest.Prozhivanie = address; } if (beneficiary.Registration != null && (status == ObjectStatus.Created || attrs != null && attrs.Contains(Beneficiary.ConstRegistration))) { var propiska = Helper.GetProzhivanie(beneficiary.Registration, defDS, syncDS, source, ref arrToUpd, ref arrConformity); var address = new Prozhivanie(); address.SetExistObjectPrimaryKey(propiska.__PrimaryKey); address.SetStatus(ObjectStatus.UnAltered); dest.Propiska = address; } if (beneficiary.Citizenship != null && (status == ObjectStatus.Created || attrs != null && attrs.Contains(Beneficiary.ConstCitizenship))) { var val = new Strana(); val.SetExistObjectPrimaryKey(beneficiary.Citizenship.Guid); defDS.LoadObject(val); dest.Grazhdanstvo = val; } }
/// <summary> /// Получить проживание /// </summary> /// <param name="address">Адрес источника</param> /// <param name="source">Наименование источника</param> /// <returns>Проживание</returns> public static Prozhivanie GetProzhivanie(Address address, IDataService defDS, IDataService syncDS, Source source, ref List <DataObject> arrToUpd, ref Dictionary <string, List <DataObject> > arrConformity) { if (address == null) { return(null); } var type = typeof(Prozhivanie); var nameType = type.FullName; //сначала поищем среди объектов на обновление var obj = new MapperHelper.PkDataObject { __PrimaryKey = address.Guid }; var prozivanie = (Prozhivanie)arrToUpd.FirstOrDefault(x => x.GetType().FullName == nameType && x.__PrimaryKey.Equals(obj.__PrimaryKey)); if (prozivanie != null) { return(prozivanie); } var typeAddress = arrConformity[MapperHelper.sObjectType].Cast <ObjectType>() .FirstOrDefault(x => x.name == nameType) ?? syncDS.Query <ObjectType>(ObjectType.Views.ObjectTypeE) .FirstOrDefault(x => x.name == nameType) ?? new ObjectType { name = nameType, id = type.Name }; if (typeAddress.GetStatus() == ObjectStatus.Created) { arrConformity[MapperHelper.sObjectType].Add(typeAddress); } var conformity = arrConformity[MapperHelper.sConformity].Cast <Conformity>().FirstOrDefault(x => x.Source.__PrimaryKey.Equals(source.__PrimaryKey) && x.Type.__PrimaryKey.Equals(typeAddress.__PrimaryKey) && x.pkSource.Equals(address.Guid)); if (conformity == null && typeAddress.GetStatus() != ObjectStatus.Created && source.GetStatus() != ObjectStatus.Created) { conformity = syncDS.Query <Conformity>(Conformity.Views.ConformityE).FirstOrDefault(x => x.Source.__PrimaryKey.Equals(source.__PrimaryKey) && x.Type.__PrimaryKey.Equals(typeAddress.__PrimaryKey) && x.pkSource.Equals(address.Guid)); } if (conformity == null) { var adr = new Prozhivanie { __PrimaryKey = address.Guid }; prozivanie = defDS.Query <Prozhivanie>(Prozhivanie.Views.ProzhivanieE) .FirstOrDefault(x => x.__PrimaryKey.Equals(adr.__PrimaryKey)); if (prozivanie == null) { var terr = address.Territory.Guid.ToString(); var query = defDS.Query <Prozhivanie>(Prozhivanie.Views.ProzhivanieE).Where(x => x.Territoriia.__PrimaryKey.ToString().Equals(terr) && x.NomerDoma == address.Number && x.NomerStroeniia == address.HouseNumber && x.Kvartira == address.Appartment); if (address.Street == null) { query = query.Where(x => x.Ulitca == null); } else { var street = address.Street?.Guid.ToString(); query = query.Where(x => x.Ulitca != null && x.Ulitca.__PrimaryKey.ToString().Equals(street)); } prozivanie = query.FirstOrDefault(); } } else { obj = new MapperHelper.PkDataObject { __PrimaryKey = conformity.pkDest }; prozivanie = defDS.Query <Prozhivanie>(Prozhivanie.Views.ProzhivanieE).FirstOrDefault(x => x.__PrimaryKey.Equals(obj.__PrimaryKey)); prozivanie = new AddressToProzhivanieMapper().Map(address, prozivanie); if (prozivanie.GetStatus() == ObjectStatus.Altered) { arrToUpd.Add(prozivanie); } } if (prozivanie == null) { prozivanie = new Prozhivanie(); prozivanie = new AddressToProzhivanieMapper().Map(address, prozivanie); arrToUpd.Add(prozivanie); } if (conformity == null) { conformity = new Conformity { Source = source, Type = typeAddress, pkSource = address.Guid, pkDest = new Guid(prozivanie.__PrimaryKey.ToString()) }; arrConformity[MapperHelper.sConformity].Add(conformity); } return(prozivanie); }