Пример #1
0
        /// <summary>
        /// Method for updating enterprise properties
        /// </summary>
        /// <param name = "statUnit"> </param>
        /// <param name = "model"> </param>
        /// <returns> </returns>
        public static EnterpriseGroup UpdateProperties(this EnterpriseGroup statUnit, PersonStatUnitModel model)
        {
            statUnit.Name         = model.Name;
            statUnit.StatId       = model.StatId;
            statUnit.TelephoneNo  = model.TelephoneNo;
            statUnit.EmailAddress = model.EmailAddress;

            return(statUnit);
        }
Пример #2
0
        private async Task <EnterpriseGroup> CreateGroupForEnterpriseAsync(EnterpriseUnit enterpriseUnit)
        {
            var enterpriseGroup = new EnterpriseGroup
            {
                AddressId                = enterpriseUnit.AddressId,
                ActualAddressId          = enterpriseUnit.ActualAddressId,
                HistoryEnterpriseUnitIds = enterpriseUnit.RegId.ToString()
            };

            Mapper.Map(enterpriseUnit, enterpriseGroup);
            _dbContext.EnterpriseGroups.Add(enterpriseGroup);
            await _dbContext.SaveChangesAsync();

            enterpriseUnit.EntGroupId = enterpriseGroup.RegId;
            _dbContext.EnterpriseUnits.Update(enterpriseUnit);
            await _dbContext.SaveChangesAsync();

            return(enterpriseGroup);
        }
Пример #3
0
        /// <summary>
        /// Creating an enterprise with a group of enterprises
        /// </summary>
        /// <param name="enterpriseUnit"></param>
        /// <returns></returns>
        public async Task CreateEnterpriseWithGroup(EnterpriseUnit enterpriseUnit)
        {
            EnterpriseUnit  createdUnit;
            EnterpriseGroup createdGroup = null;

            using (var transaction = _dbContext.Database.BeginTransaction())
            {
                try
                {
                    if (enterpriseUnit.EntGroupId == null || enterpriseUnit.EntGroupId == 0)
                    {
                        createdUnit = await CreateStatUnitAsync(enterpriseUnit);

                        createdGroup = await CreateGroupForEnterpriseAsync(createdUnit);

                        var sameStatIdLegalUnits = _dbContext.LegalUnits.Where(leu => leu.StatId == enterpriseUnit.StatId).ToList();
                        await LinkLegalsToEnterpriseAsync(sameStatIdLegalUnits, createdUnit);
                    }
                    else
                    {
                        createdUnit = _dbContext.EnterpriseUnits.Add(enterpriseUnit).Entity;
                        await _dbContext.SaveChangesAsync();
                    }
                    transaction.Commit();
                }
                catch (Exception e)
                {
                    throw new BadRequestException(nameof(Resource.SaveError), e);
                }
            }

            await _elasticService.AddDocument(Mapper.Map <IStatisticalUnit, ElasticStatUnit>(createdUnit));

            if (createdGroup != null)
            {
                await _elasticService.AddDocument(Mapper.Map <IStatisticalUnit, ElasticStatUnit>(createdGroup));
            }
        }
Пример #4
0
        /// <summary>
        /// Creation of a group of enterprises
        /// </summary>
        /// <param name="enterpriseGroup"></param>
        /// <returns></returns>
        public async Task CreateGroup(EnterpriseGroup enterpriseGroup)
        {
            EnterpriseGroup createdEnterpriseGroup;

            using (var transaction = _dbContext.Database.BeginTransaction())
            {
                try
                {
                    createdEnterpriseGroup = await CreateStatUnitAsync(enterpriseGroup);

                    var sameStatIdEnterprises = _dbContext.EnterpriseUnits.Where(eu => eu.StatId == enterpriseGroup.StatId).ToList();
                    await LinkEnterprisesToGroupAsync(sameStatIdEnterprises, createdEnterpriseGroup);

                    transaction.Commit();
                }
                catch (Exception e)
                {
                    throw new BadRequestException(nameof(Resource.SaveError), e);
                }
            }

            await _elasticService.AddDocument(Mapper.Map <IStatisticalUnit, ElasticStatUnit>(createdEnterpriseGroup));
        }
Пример #5
0
        public static void AddStatUnits(NSCRegDbContext context)
        {
            var roleId       = context.Roles.FirstOrDefault(r => r.Name == DefaultRoleNames.Administrator)?.Id;
            var adminId      = context.UserRoles.FirstOrDefault(x => x.RoleId == roleId)?.UserId;
            var sysAdminUser = context.Users.FirstOrDefault(u => u.Id == adminId);

            context.StatisticalUnits.AddRange(new LocalUnit
            {
                Name        = "local unit 1",
                UserId      = sysAdminUser.Id,
                RegIdDate   = DateTime.Now,
                StartPeriod = DateTime.Now,
                EndPeriod   = DateTime.MaxValue,
                Address     = new Address {
                    AddressPart1 = "local address 1", RegionId = 1
                },
            }, new LocalUnit
            {
                Name        = "local unit 2",
                StatId      = "OKPO2LU",
                UserId      = sysAdminUser.Id,
                RegIdDate   = DateTime.Now,
                StartPeriod = DateTime.Now,
                EndPeriod   = DateTime.MaxValue,
                Address     = new Address {
                    AddressPart1 = "local address 2", RegionId = 1
                },
            });

            var le1 = new LegalUnit
            {
                Name        = "legal unit 1",
                UserId      = sysAdminUser.Id,
                RegIdDate   = DateTime.Now,
                StatId      = "OKPO2LEGALU",
                StartPeriod = DateTime.Now,
                EndPeriod   = DateTime.MaxValue,
                Address     = new Address
                {
                    AddressPart1 = "legal address 1",
                    RegionId     = 1
                },
                ActivitiesUnits = new List <ActivityStatisticalUnit>
                {
                    new ActivityStatisticalUnit
                    {
                        Activity = new Activity
                        {
                            IdDate           = new DateTime(2017, 03, 17),
                            Turnover         = 2000,
                            ActivityType     = ActivityTypes.Primary,
                            UpdatedByUser    = sysAdminUser,
                            ActivityYear     = DateTime.Today.Year,
                            ActivityCategory = context.ActivityCategories.Single(v => v.Code == "11.07.9")
                        },
                    },
                    new ActivityStatisticalUnit
                    {
                        Activity =
                            new Activity
                        {
                            IdDate           = new DateTime(2017, 03, 28),
                            Turnover         = 4000,
                            ActivityType     = ActivityTypes.Secondary,
                            UpdatedByUser    = sysAdminUser,
                            ActivityYear     = 2006,
                            ActivityCategory = context.ActivityCategories.Single(v => v.Code == "91.01.9")
                        }
                    }
                },
            };

            context.StatisticalUnits.AddRange(le1, new LegalUnit
            {
                Name        = "legal unit 2",
                UserId      = sysAdminUser.Id,
                IsDeleted   = true,
                RegIdDate   = DateTime.Now,
                StartPeriod = DateTime.Now,
                EndPeriod   = DateTime.MaxValue,
                Address     = new Address
                {
                    AddressPart1 = "legal address 2",
                    RegionId     = 1
                },
            });

            var eu1 = new EnterpriseUnit
            {
                Name        = "enterprise unit 1",
                StatId      = "OKPO1EU",
                UserId      = sysAdminUser.Id,
                RegIdDate   = DateTime.Now,
                StartPeriod = DateTime.Now,
                EndPeriod   = DateTime.MaxValue,
            };

            var eu2 = new EnterpriseUnit
            {
                Name        = "enterprise unit 2",
                StatId      = "OKPO2EU",
                UserId      = sysAdminUser.Id,
                RegIdDate   = DateTime.Now,
                StartPeriod = DateTime.Now,
                EndPeriod   = DateTime.MaxValue,
                Address     = new Address
                {
                    AddressPart1 = "enterprise address 2",
                    RegionId     = 1
                },
            };

            context.EnterpriseUnits.AddRange(eu1, eu2, new EnterpriseUnit
            {
                Name        = "enterprise unit 3",
                StatId      = "OKPO3EU",
                UserId      = sysAdminUser.Id,
                IsDeleted   = true,
                RegIdDate   = DateTime.Now,
                StartPeriod = DateTime.Now,
                EndPeriod   = DateTime.MaxValue,
                Address     = new Address
                {
                    AddressPart1 = "enterprise address 2",
                    RegionId     = 1
                },
            }, new EnterpriseUnit
            {
                StatId      = "OKPO4EU",
                Name        = "enterprise unit 4",
                UserId      = sysAdminUser.Id,
                RegIdDate   = DateTime.Now,
                StartPeriod = DateTime.Now,
                EndPeriod   = DateTime.MaxValue,
                Address     = new Address
                {
                    AddressPart1 = "enterprise address 2",
                    RegionId     = 1
                },
            }, new EnterpriseUnit
            {
                Name        = "enterprise unit 5",
                UserId      = sysAdminUser.Id,
                RegIdDate   = DateTime.Now,
                StartPeriod = DateTime.Now,
                EndPeriod   = DateTime.MaxValue,
                Address     = new Address
                {
                    AddressPart1 = "enterprise address 2",
                    RegionId     = 1
                },
            }, new EnterpriseUnit
            {
                Name        = "enterprise unit 6",
                UserId      = sysAdminUser.Id,
                RegIdDate   = DateTime.Now,
                StartPeriod = DateTime.Now,
                EndPeriod   = DateTime.MaxValue,
                Address     = new Address
                {
                    AddressPart1 = "enterprise address 2",
                    RegionId     = 1
                },
            });

            var eg1 = new EnterpriseGroup
            {
                Name        = "enterprise group 1",
                UserId      = sysAdminUser.Id,
                StatId      = "EG1",
                RegIdDate   = DateTime.Now,
                StartPeriod = DateTime.Now,
                EndPeriod   = DateTime.MaxValue,
                Address     =
                    new Address {
                    AddressPart1 = "ent. group address 1", RegionId = 1
                },
            };

            var eg2 = new EnterpriseGroup
            {
                Name        = "enterprise group 2",
                StatId      = "EG2",
                UserId      = sysAdminUser.Id,
                RegIdDate   = DateTime.Now,
                StartPeriod = DateTime.Now,
                EndPeriod   = DateTime.MaxValue,
                Address     =
                    new Address {
                    AddressPart1 = "ent. group address 2", RegionId = 1
                }
            };

            context.EnterpriseGroups.AddRange(eg1, eg2);

            //Links:
            eu1.EnterpriseGroup = eg1;
            le1.EnterpriseUnit  = eu1;

            context.SaveChanges();
        }
Пример #6
0
        private async Task LinkEnterprisesToGroupAsync(IEnumerable <EnterpriseUnit> sameStatIdEnterpriseUnits, EnterpriseGroup enterpriseGroup)
        {
            foreach (var enterpriseUnit in sameStatIdEnterpriseUnits)
            {
                enterpriseUnit.EntGroupId = enterpriseGroup.RegId;
                _dbContext.EnterpriseUnits.Update(enterpriseUnit);
            }
            await _dbContext.SaveChangesAsync();

            var enterprisesOfGroup = _dbContext.EnterpriseUnits.Where(eu => eu.RegId == enterpriseGroup.RegId)
                                     .Select(x => x.RegId).ToList();

            enterpriseGroup.HistoryEnterpriseUnitIds = string.Join(",", enterprisesOfGroup);
            _dbContext.Update(enterpriseGroup);

            await _dbContext.SaveChangesAsync();
        }
Пример #7
0
        private IEnumerable <Expression <Func <T, bool> > > GetEnterpriseGroupPredicates(EnterpriseGroup enterpriseGroup)
        {
            var predicates = new List <Expression <Func <T, bool> > >
            {
                string.IsNullOrEmpty(enterpriseGroup.ShortName)
                    ? False()
                    : GetPredicate(FieldEnum.ShortName, enterpriseGroup.ShortName, OperationEnum.Equal),
                string.IsNullOrEmpty(enterpriseGroup.TelephoneNo)
                    ? False()
                    : GetPredicate(FieldEnum.TelephoneNo, enterpriseGroup.TelephoneNo, OperationEnum.Equal),
                string.IsNullOrEmpty(enterpriseGroup.EmailAddress)
                    ? False()
                    : GetPredicate(FieldEnum.EmailAddress, enterpriseGroup.EmailAddress, OperationEnum.Equal),
                string.IsNullOrEmpty(enterpriseGroup.ContactPerson)
                    ? False()
                    : GetPredicate(FieldEnum.ContactPerson, enterpriseGroup.ContactPerson, OperationEnum.Equal)
            };

            return(predicates);
        }