// This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            SetAppSettingsFile();

            _config = Configuration.Get <AppConfig>();


            services.AddControllers();

            services.AddAutoMapper(new Type[] { typeof(AutoMapperProfile) });

            services.AddDbContext <DataContext>
                (options => options.UseSqlServer(_config.DBConfig.ConnectionString));

            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new OpenApiInfo {
                    Title = "RabbitMQ.Producer", Version = "v1"
                });
            });

            // Add Quartz services
            services.AddTransient <IJobFactory, SingletonJobFactory>();
            services.AddTransient <ISchedulerFactory, StdSchedulerFactory>();

            // Add HostedService
            services.AddHostedService <QuartzHostedService>();

            // Add our job
            services.AddTransient <HandleReDeliveryMessages>();
            services.AddSingleton(new JobSchedule(jobType: typeof(HandleReDeliveryMessages),
                                                  cronExpression: _config.ReDelivery.JobRunTime));

            services.AddTransient <IQueueService, QueueService>();
            services.AddTransient <IReDeliveryService, ReDeliveryService>();
            services.AddSingleton <ICustomLoggingConfig, CustomLoggingConfig>();

            services.AddSingleton(_config);

            var serviceProvider = services.BuildServiceProvider();

            CustomRabbitMQ = new CustomRabbitMQ(_config, serviceProvider);
            services.AddSingleton(CustomRabbitMQ);
        }
 public QueueService(Data.DataContext context, CustomRabbitMQ customRabbitMQ)
 {
     _context        = context;
     _customRabbitMQ = customRabbitMQ;
 }