Esempio n. 1
0
 public Scheduler(RideRepository rideRepository, TaxiRepository taxiRepository, RidePriceCalculator ridePriceCalculator, Logger logger)
 {
     _rideRepository      = rideRepository ?? throw new ArgumentNullException(nameof(rideRepository));
     _taxiRepository      = taxiRepository ?? throw new ArgumentNullException(nameof(taxiRepository));
     _ridePriceCalculator = ridePriceCalculator ?? throw new ArgumentNullException(nameof(ridePriceCalculator));
     _logger = logger ?? throw new ArgumentNullException(nameof(logger));
 }
Esempio n. 2
0
        private void initRepository(IStorage resolver)
        {
            var filename = resolver.GetDbDirectory() + "taxi.db";

            repo = new TaxiRepository(filename);
            repo.CheckDB();

            var list = repo.GetTaxiListForHomePage()
                       .Select(t => new TaxiVM(t));

            this.Items = new ObservableCollection <TaxiVM>(list);
        }
Esempio n. 3
0
        public static void Main(string[] args)
        {
            var rideRepo       = new RideRepository();
            var ridePriceCalc  = new RidePriceCalculator();
            var logger         = new Logger();
            var taxiRepository = new TaxiRepository(new List <Taxi>()
            {
                new Taxi(1, "Predrag", new TaxiCompany("Naxi", 10), 1),
                new Taxi(2, "Nenad", new TaxiCompany("Naxi", 10), 4),
                new Taxi(3, "Dragan", new TaxiCompany("Alfa", 15), 6),
                new Taxi(4, "Goran", new TaxiCompany("Gold", 13), 7)
            });


            var scheduler = new Scheduler(rideRepo, taxiRepository, ridePriceCalc, logger);

            Console.WriteLine("Ordering ride from 5 to 0...");
            var ride1 = scheduler.OrderCityRide(5, 0, new DateTime(2018, 1, 1, 23, 0, 0));

            scheduler.AcceptRide(ride1);
            Console.WriteLine("");


            Console.WriteLine("Ordering ride from 0 to 12...");
            var ride2 = scheduler.OrderInnerCityRide(0, 12, new DateTime(2018, 1, 1, 9, 0, 0));

            scheduler.AcceptRide(ride2);
            Console.WriteLine("");


            Console.WriteLine("Ordering ride from 5 to 0...");
            var ride3 = scheduler.OrderCityRide(5, 0, new DateTime(2018, 1, 1, 11, 0, 0));

            scheduler.AcceptRide(ride3);
            Console.WriteLine("");


            Console.WriteLine("Ordering ride from 35 to 12...");
            var ride4 = scheduler.OrderCityRide(35, 12, new DateTime(2018, 1, 1, 11, 0, 0));

            scheduler.AcceptRide(ride4);
            Console.WriteLine("");

            Console.WriteLine("Driver with ID = 2 earned today:");
            foreach (var r in scheduler.RidesOfTaxiDriver(2))
            {
                Console.WriteLine("Price: " + r.Price);
            }
            Console.WriteLine("Total: " + scheduler.EarningsOfTaxiDriver(2));
        }
        private void CheckAndRunJobWithBuild()
        {
            try
            {
                var job = new DeploymentJobServiceClient().GetNext();
                if (job == null)
                {
                    return;
                }

                _job = job;

                Log("Starting", JobStatus.Inprogress);

                var sourceDirectory = Path.Combine(Path.GetPathRoot(System.Environment.GetFolderPath(System.Environment.SpecialFolder.System)), "mktaxi");

                Log("Source Folder = " + sourceDirectory);

                var taxiRepo = new TaxiRepository(sourceDirectory, bool.Parse(ConfigurationManager.AppSettings["IsGitHubSourceControl"]));
                if (_job.Server.Role == EnvironmentRole.BuildServer)
                {
                    taxiRepo.FetchSource(_job.Revision.Commit, str => Log(str));
                    Build(sourceDirectory);
                }

                //build server and deploy
                if (_job.ServerSide || _job.Database)
                {
                    var packagesDirectory = Path.Combine(sourceDirectory, "Deployment\\Server\\Package\\");
                    if (_job.Server.Role != EnvironmentRole.BuildServer)
                    {
                        packagesDirectory = ConfigurationManager.AppSettings["DeployFolder"];
                    }
                    var packagesLocation = CleanAndUnZip(packagesDirectory);
                    DeployTaxiHail(packagesLocation);
                }

                Log("Job Complete", JobStatus.Success);
            }
            catch (Exception e)
            {
                _logger.Error(e.Message, e);
                Log(e.Message, JobStatus.Error);
            }
        }
Esempio n. 5
0
        private void CheckAndRunJobWithBuild()
        {
            try
            {
                var job = new DeploymentJobServiceClient().GetNext();

                if (job == null)
                {
                    return;
                }

                _job = job;

                try
                {
                    _logger.Debug("Begin work on " + job.Company.CompanyName);

                    UpdateJob("Starting at " + DateTime.Now, JobStatus.Inprogress);

                    var sourceDirectoryConfig = ConfigurationManager.AppSettings["CheckoutDir"];

                    var sourceDirectory = string.IsNullOrEmpty(sourceDirectoryConfig)
                                                ? Path.Combine(Path.GetTempPath(), "TaxiHailSourceNewService")
                                                : sourceDirectoryConfig;

                    if (!Directory.Exists(sourceDirectory))
                    {
                        Directory.CreateDirectory(sourceDirectory);
                        UpdateJob("Directory " + sourceDirectory + " did not exist, creating...");
                        _isNewFolder = true;
                    }

                    var releaseiOSAdHocDir = Path.Combine(sourceDirectory, "Src", "Mobile", "iOS", "bin", "iPhone", "AdHoc");
                    if (Directory.Exists(releaseiOSAdHocDir))
                    {
                        Directory.Delete(releaseiOSAdHocDir, true);
                    }
                    var releaseiOSAdHocObjDir = Path.Combine(sourceDirectory, "Src", "Mobile", "iOS", "obj", "iPhone", "AdHoc");
                    if (Directory.Exists(releaseiOSAdHocObjDir))
                    {
                        Directory.Delete(releaseiOSAdHocObjDir, true);
                    }

                    var releaseiOSAppStoreDir = Path.Combine(sourceDirectory, "Src", "Mobile", "iOS", "bin", "iPhone", "AppStore");
                    if (Directory.Exists(releaseiOSAppStoreDir))
                    {
                        Directory.Delete(releaseiOSAppStoreDir, true);
                    }
                    var releaseiOSAppStoreObjDir = Path.Combine(sourceDirectory, "Src", "Mobile", "iOS", "obj", "iPhone", "AppStore");
                    if (Directory.Exists(releaseiOSAppStoreObjDir))
                    {
                        Directory.Delete(releaseiOSAppStoreObjDir, true);
                    }

                    var releaseAndroidDir = Path.Combine(sourceDirectory, "Src", "Mobile", "Android", "bin", "Release");
                    if (Directory.Exists(releaseAndroidDir))
                    {
                        Directory.Delete(releaseAndroidDir, true);
                    }

                    var releaseBlackBerryApkDir = Path.Combine(sourceDirectory, "Src", "Mobile", "TaxiHail.BlackBerry", "bin", "Release");
                    if (Directory.Exists(releaseBlackBerryApkDir))
                    {
                        Directory.Delete(releaseBlackBerryApkDir, true);
                    }

                    var releaseBlackBerryBarDir = Path.Combine(sourceDirectory, "Src", "BBTools", "Outputs");
                    if (Directory.Exists(releaseBlackBerryBarDir))
                    {
                        Directory.Delete(releaseBlackBerryBarDir, true);
                    }

                    var releaseCallboxAndroidDir = Path.Combine(sourceDirectory, "Src", "Mobile", "MK.Callbox.Mobile.Client.Android", "bin", "Release");
                    if (Directory.Exists(releaseCallboxAndroidDir))
                    {
                        Directory.Delete(releaseCallboxAndroidDir, true);
                    }

                    DownloadAndInstallProfileIfNecessary();

                    var isGitHub = bool.Parse(ConfigurationManager.AppSettings["IsGitHubSourceControl"]);
                    var taxiRepo = new TaxiRepository(sourceDirectory, isGitHub);

                    UpdateJob("FetchSource");
                    taxiRepo.FetchSource(_job.Revision.Commit, str => UpdateJob(str));

                    UpdateJob("Customize");
                    Customize(sourceDirectory, _job);

                    UpdateJob("Build");
                    BuildMobile(sourceDirectory, releaseiOSAdHocDir, releaseiOSAppStoreDir);

                    UpdateJob("Deploy");
                    var deploymentInfo = Deploy(_job.Company, releaseiOSAdHocDir, releaseiOSAppStoreDir, releaseAndroidDir, releaseCallboxAndroidDir, releaseBlackBerryApkDir, releaseBlackBerryBarDir);

                    CreateNewVersionInCustomerPortal(deploymentInfo);
                    UpdateJob(string.Format("Done (ended at {0})", DateTime.Now), JobStatus.Success);

                    _logger.Debug("Deployment finished without error");
                }
                catch (Exception e)
                {
                    _logger.Error(e.Message);
                    UpdateJob(string.Format("{0} (ended at {1})", e.Message, DateTime.Now), JobStatus.Error);
                }
            }
            catch (Exception e)
            {
                _logger.Error(e.Message);
            }
        }