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;
            }
        }
Esempio n. 2
0
        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;
            }
        }
Esempio n. 3
0
        /// <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);
        }