/// <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); }
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); }
/// <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)); } }
/// <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)); }
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(); }
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(); }
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); }