コード例 #1
0
 public ImportService(
     IAuthorizationDataService authData,
     IMapper mapper,
     OlmaDbContext olmaDbContext,
     IMapsService mapsService
     ) : base(authData, mapper)
 {
     _olmaDbContext = olmaDbContext;
     _mapsService   = mapsService;
 }
コード例 #2
0
        public LocalizationUpdateService(IRepository <Olma.LocalizationItem> localizationItemRepo,
                                         IRepository <Olma.LocalizationText> localizationTextRepo,
                                         IRepository <Olma.LocalizationLanguage> localizationLanguageRepo,
                                         OlmaDbContext olmaDbContext)
        {
            _localizationItemRepo     = localizationItemRepo;
            _localizationTextRepo     = localizationTextRepo;
            _localizationLanguageRepo = localizationLanguageRepo;

            _olmaDbContext = olmaDbContext;
        }
コード例 #3
0
ファイル: Helper.cs プロジェクト: maiddipa/DPL-B2B-Plattform
        public static void BatchInsert <TEntity>(TEntity sample, OlmaDbContext context, IEnumerable <TEntity> rows, string tableName, string columns, Func <TEntity, string> getValues, bool identityInsert = true)
        {
            // 1000 is the max size for batched inserts
            double chunkSize = 1000;
            //
            var chunkedInserts = rows
                                 .Select((i, index) => new { row = i, index })
                                 .GroupBy(i => Math.Floor(i.index / chunkSize), i => i.row)
                                 .Select(g => {
                var sb = new StringBuilder();
                sb.AppendLine($"INSERT INTO {tableName} ({columns}) VALUES ");

                foreach (var row in g)
                {
                    sb.AppendLine($"({getValues(row)}),");
                }
                sb.Remove(sb.Length - 3, 3);
                return(sb.ToString());
            });

            if (identityInsert && context.Database.CurrentTransaction == null)
            {
                throw new ArgumentNullException("Transaction is required to execute batched inserts");
            }

            if (identityInsert)
            {
                context.Database.ExecuteSqlRaw($"SET IDENTITY_INSERT {tableName} ON ");
            }

            foreach (var insert in chunkedInserts)
            {
                context.Database.ExecuteSqlRaw(insert);
            }

            if (identityInsert)
            {
                context.Database.ExecuteSqlRaw($"SET IDENTITY_INSERT {tableName} OFF ");
            }
        }
コード例 #4
0
 public UserService(
     IAuthorizationDataService authData,
     IMapper mapper,
     IRepository <Olma.User> userRepo,
     ICustomersService customersService,
     IPostingAccountsService postingAccountsService,
     IPermissionsService permissionsService,
     IServiceProvider serviceProvider,
     IGraphFactory graphFactory,
     OlmaDbContext olmaDbContext, IRepository <Olma.Customer> customerRepo, IRepository <Olma.UserCustomerRelation> userCustomerRelationRepo) : base(authData, mapper)
 {
     _authData                 = authData;
     _userRepo                 = userRepo;
     _customersService         = customersService;
     _postingAccountsService   = postingAccountsService;
     _permissionsService       = permissionsService;
     _serviceProvider          = serviceProvider;
     _graphFactory             = graphFactory;
     _olmaDbContext            = olmaDbContext;
     _customerRepo             = customerRepo;
     _userCustomerRelationRepo = userCustomerRelationRepo;
     _mapper = mapper;
 }
コード例 #5
0
 public OlmaRepository(OlmaDbContext repositoryContext) : base(repositoryContext)
 {
     this.Context.Database.SetCommandTimeout(300);
 }
コード例 #6
0
        public static void ResetDates(DbContextOptions <OlmaDbContext> options, IServiceProvider serviceProvider)
        {
            using var context = new OlmaDbContext(options, serviceProvider);
            context.Database.EnsureCreated();
            var initialDate = context.Organizations
                              .IgnoreQueryFilters().Min(a => a.CreatedAt);
            var timeSpanToAdd = (TimeSpan)(DateTime.UtcNow - initialDate);
            var weeksToAdd    = timeSpanToAdd.Days / 7;

            if (weeksToAdd == 0)
            {
                Console.WriteLine($"Nothing to do. TimeSpan to short: {timeSpanToAdd.ToString()}");
                return;
            }

            Console.WriteLine($"Add {weeksToAdd} weeks to each DateTime.");


            var entityTypes = context.Model.GetEntityTypes();

            foreach (var entityType in entityTypes)
            {
                var properties             = entityType.GetProperties();
                var datePropertiesToUpdate = (from
                                              propertyInfo in properties
                                              let type = Nullable.GetUnderlyingType(propertyInfo.ClrType) ?? propertyInfo.ClrType
                                                         where type == typeof(DateTime)
                                                         select propertyInfo).ToList();

                //Skip Exceptions, DateTimes witch should not be reset
                RemoveDateTimePropertyExceptionsToReset(datePropertiesToUpdate, entityType);

                if (datePropertiesToUpdate.Count > 0)
                {
                    switch (entityType.Name)
                    {
                    case "Dpl.B2b.Dal.Models.Address":
                        UpdateAllDateProperties <Address>(datePropertiesToUpdate, context, weeksToAdd);
                        break;

                    case "Dpl.B2b.Dal.Models.PostingAccount":
                        UpdateAllDateProperties <PostingAccount>(datePropertiesToUpdate, context, weeksToAdd);
                        break;

                    case "Dpl.B2b.Dal.Models.PostingRequest":
                        UpdateAllDateProperties <PostingRequest>(datePropertiesToUpdate, context, weeksToAdd);
                        break;

                    case "Dpl.B2b.Dal.Models.Customer":
                        UpdateAllDateProperties <Customer>(datePropertiesToUpdate, context, weeksToAdd);
                        break;

                    case "Dpl.B2b.Dal.Models.CustomerDivision":
                        UpdateAllDateProperties <CustomerDivision>(datePropertiesToUpdate, context, weeksToAdd);
                        break;

                    case "Dpl.B2b.Dal.Models.CustomerPartner":
                        UpdateAllDateProperties <CustomerPartner>(datePropertiesToUpdate, context, weeksToAdd);
                        break;

                    case "Dpl.B2b.Dal.Models.ExpressCode":
                        UpdateAllDateProperties <ExpressCode>(datePropertiesToUpdate, context, weeksToAdd);
                        break;

                    case "Dpl.B2b.Dal.Models.PostingAccountPreset":
                        UpdateAllDateProperties <PostingAccountPreset>(datePropertiesToUpdate, context, weeksToAdd);
                        break;

                    case "Dpl.B2b.Dal.Models.LoadCarrier":
                        UpdateAllDateProperties <LoadCarrier>(datePropertiesToUpdate, context, weeksToAdd);
                        break;

                    case "Dpl.B2b.Dal.Models.LoadingLocation":
                        UpdateAllDateProperties <LoadingLocation>(datePropertiesToUpdate, context, weeksToAdd);
                        break;

                    case "Dpl.B2b.Dal.Models.Partner":
                        UpdateAllDateProperties <Partner>(datePropertiesToUpdate, context, weeksToAdd);
                        break;

                    case "Dpl.B2b.Dal.Models.Permission":
                        UpdateAllDateProperties <Permission>(datePropertiesToUpdate, context, weeksToAdd);
                        break;

                    case "Dpl.B2b.Dal.Models.Organization":
                        UpdateAllDateProperties <Organization>(datePropertiesToUpdate, context, weeksToAdd);
                        break;

                    //case "Dpl.B2b.Dal.Models.User":
                    //    UpdateAllDateProperties<User>(datePropertiesToUpdate, context, timeSpanToAdd);
                    //    break;
                    case "Dpl.B2b.Dal.Models.AdditionalField":
                        UpdateAllDateProperties <AdditionalField>(datePropertiesToUpdate, context, weeksToAdd);
                        break;

                    case "Dpl.B2b.Dal.Models.AdditionalFieldValue":
                        UpdateAllDateProperties <AdditionalFieldValue>(datePropertiesToUpdate, context, weeksToAdd);
                        break;

                    case "Dpl.B2b.Dal.Models.BusinessHour":
                        UpdateAllDateProperties <BusinessHour>(datePropertiesToUpdate, context, weeksToAdd);
                        break;

                    case "Dpl.B2b.Dal.Models.BusinessHourException":
                        UpdateAllDateProperties <BusinessHourException>(datePropertiesToUpdate, context, weeksToAdd);
                        break;

                    case "Dpl.B2b.Dal.Models.CalculatedBalance":
                        UpdateAllDateProperties <CalculatedBalance>(datePropertiesToUpdate, context, weeksToAdd);
                        break;

                    case "Dpl.B2b.Dal.Models.CalculatedBalancePosition":
                        UpdateAllDateProperties <CalculatedBalancePosition>(datePropertiesToUpdate, context, weeksToAdd);
                        break;

                    case "Dpl.B2b.Dal.Models.CustomerDivisionDocumentSetting":
                        UpdateAllDateProperties <CustomerDivisionDocumentSetting>(datePropertiesToUpdate, context, weeksToAdd);
                        break;

                    case "Dpl.B2b.Dal.Models.CustomerDocumentSetting":
                        UpdateAllDateProperties <CustomerDocumentSetting>(datePropertiesToUpdate, context, weeksToAdd);
                        break;

                    case "Dpl.B2b.Dal.Models.OrganizationPartnerDirectory":
                        UpdateAllDateProperties <OrganizationPartnerDirectory>(datePropertiesToUpdate, context, weeksToAdd);
                        break;

                    case "Dpl.B2b.Dal.Models.CustomerPartnerDirectoryAccess":
                        UpdateAllDateProperties <CustomerPartnerDirectoryAccess>(datePropertiesToUpdate, context, weeksToAdd);
                        break;

                    case "Dpl.B2b.Dal.Models.PartnerPreset":
                        UpdateAllDateProperties <PartnerPreset>(datePropertiesToUpdate, context, weeksToAdd);
                        break;

                    case "Dpl.B2b.Dal.Models.CustomerSortingWorker":
                        UpdateAllDateProperties <CustomerSortingWorker>(datePropertiesToUpdate, context, weeksToAdd);
                        break;

                    case "Dpl.B2b.Dal.Models.DeliveryNote":
                        UpdateAllDateProperties <DeliveryNote>(datePropertiesToUpdate, context, weeksToAdd);
                        break;

                    case "Dpl.B2b.Dal.Models.Document":
                        UpdateAllDateProperties <Document>(datePropertiesToUpdate, context, weeksToAdd);
                        break;

                    case "Dpl.B2b.Dal.Models.DocumentNumberSequence":
                        UpdateAllDateProperties <DocumentNumberSequence>(datePropertiesToUpdate, context, weeksToAdd);
                        break;

                    case "Dpl.B2b.Dal.Models.File":
                        UpdateAllDateProperties <File>(datePropertiesToUpdate, context, weeksToAdd);
                        break;

                    case "Dpl.B2b.Dal.Models.LoadCarrierReceipt":
                        UpdateAllDateProperties <LoadCarrierReceipt>(datePropertiesToUpdate, context, weeksToAdd);
                        break;

                    case "Dpl.B2b.Dal.Models.Order":
                        UpdateAllDateProperties <Order>(datePropertiesToUpdate, context, weeksToAdd);
                        break;

                    case "Dpl.B2b.Dal.Models.OrderCondition":
                        UpdateAllDateProperties <OrderCondition>(datePropertiesToUpdate, context, weeksToAdd);
                        break;

                    case "Dpl.B2b.Dal.Models.OrderMatch":
                        UpdateAllDateProperties <OrderMatch>(datePropertiesToUpdate, context, weeksToAdd);
                        break;

                    case "Dpl.B2b.Dal.Models.OrderSerie":
                        UpdateAllDateProperties <OrderSerie>(datePropertiesToUpdate, context, weeksToAdd);
                        break;

                    case "Dpl.B2b.Dal.Models.OrderGroup":
                        UpdateAllDateProperties <OrderGroup>(datePropertiesToUpdate, context, weeksToAdd);
                        break;

                    case "Dpl.B2b.Dal.Models.PartnerDirectory":
                        UpdateAllDateProperties <PartnerDirectory>(datePropertiesToUpdate, context, weeksToAdd);
                        break;

                    case "Dpl.B2b.Dal.Models.PartnerDirectoryAccess":
                        UpdateAllDateProperties <PartnerDirectoryAccess>(datePropertiesToUpdate, context, weeksToAdd);
                        break;

                    case "Dpl.B2b.Dal.Models.Person":
                        UpdateAllDateProperties <Person>(datePropertiesToUpdate, context, weeksToAdd);
                        break;

                    case "Dpl.B2b.Dal.Models.SortingInterruption":
                        UpdateAllDateProperties <SortingInterruption>(datePropertiesToUpdate, context, weeksToAdd);
                        break;

                    case "Dpl.B2b.Dal.Models.SortingShiftLog":
                        UpdateAllDateProperties <SortingShiftLog>(datePropertiesToUpdate, context, weeksToAdd);
                        break;

                    case "Dpl.B2b.Dal.Models.SortingShiftLogPosition":
                        UpdateAllDateProperties <SortingShiftLogPosition>(datePropertiesToUpdate, context, weeksToAdd);
                        break;

                    case "Dpl.B2b.Dal.Models.SortingWorker":
                        UpdateAllDateProperties <SortingWorker>(datePropertiesToUpdate, context, weeksToAdd);
                        break;

                    case "Dpl.B2b.Dal.Models.Submission":
                        UpdateAllDateProperties <Submission>(datePropertiesToUpdate, context, weeksToAdd);
                        break;

                    case "Dpl.B2b.Dal.Models.SubmitterProfile":
                        UpdateAllDateProperties <SubmitterProfile>(datePropertiesToUpdate, context, weeksToAdd);
                        break;

                    case "Dpl.B2b.Dal.Models.Transport":
                        UpdateAllDateProperties <Transport>(datePropertiesToUpdate, context, weeksToAdd);
                        break;

                    case "Dpl.B2b.Dal.Models.TransportBid":
                        UpdateAllDateProperties <TransportBid>(datePropertiesToUpdate, context, weeksToAdd);
                        break;

                    case "Dpl.B2b.Dal.Models.Voucher":
                        UpdateAllDateProperties <Voucher>(datePropertiesToUpdate, context, weeksToAdd);
                        break;
                    }
                    //if (entityType.Name == typeof(PostingAccount).FullName)
                    //{
                    //    .GetMethod(nameof(UpdateAllDateProperties)).MakeGenericMethod(entityType.ClrType).Invoke(new object[]
                    //        {datePropertiesToUpdate,context,timeSpanToAdd});
                    //    //UpdateAllDateProperties<t>(datePropertiesToUpdate, context, timeSpanToAdd);
                    //}
                }
            }
        }
コード例 #7
0
 public DbContextsWrapper(OlmaDbContext olma)
 {
     Olma = olma;
 }
コード例 #8
0
 public static LtmsAccountFactory Instance(OlmaDbContext dbContext)
 {
     return(new LtmsAccountFactory(dbContext));
 }
コード例 #9
0
 public LtmsAccountFactory(OlmaDbContext dbContext)
 {
     this.dbContext = dbContext;
     Data           = new DataContainer();
 }
コード例 #10
0
 public LoadCarrierSortingService(
     IAuthorizationDataService authData,
     IMapper mapper,
     IRepository <Olma.LoadCarrier> olmaLoadCarrierRepo, IRepository <Olma.LoadCarrierReceipt> olmaLoadCarrierReceiptRepo, IRepository <Olma.LoadCarrierSorting> olmaLoadCarrierSortingRepo, OlmaDbContext olmaDbContext, IPostingRequestsService postingRequestsService) : base(authData, mapper)
 {
     _olmaLoadCarrierRepo        = olmaLoadCarrierRepo;
     _olmaLoadCarrierReceiptRepo = olmaLoadCarrierReceiptRepo;
     _olmaLoadCarrierSortingRepo = olmaLoadCarrierSortingRepo;
     _olmaDbContext          = olmaDbContext;
     _postingRequestsService = postingRequestsService;
 }
コード例 #11
0
 public static LtmsBookingFactory Instance(OlmaDbContext dbContext)
 {
     return(new LtmsBookingFactory());
 }