private string GetUrlFromModel(AddDeploymentJobModel model, Company company) { if (model.ServerUrlOptions == ServerUrlOptions.Other) { return(model.ServerUrl); } if (model.ServerUrlOptions == ServerUrlOptions.Production) { // Newer version (2.0 and up) will use the load balanced URL // Version 1.x still uses the old one return(string.Format(model.RevisionId.StartsWith("1.") ? "https://services.taxihail.com/{0}/api/" : "https://api.taxihail.com/{0}/api/", company.CompanyKey)); } if (model.ServerUrlOptions == ServerUrlOptions.Staging) { return(string.Format("http://staging.taxihail.com/{0}/api/", company.CompanyKey)); } if (model.ServerUrlOptions == ServerUrlOptions.Dev) { return(string.Format("http://test.taxihail.biz:8181/{0}/api/", company.CompanyKey)); } if (model.ServerUrlOptions == ServerUrlOptions.Arro) { return(string.Format("https://api.goarro.com/{0}/api/", company.CompanyKey)); } return(null); }
public ActionResult DeployCustomer(DeployCustomerModel model) { if (model.DeployOptions == DeployOptions.Both || model.DeployOptions == DeployOptions.MobileApp) { var job = new AddDeploymentJobModel { Android = true, CallBox = false, CompanyId = model.CompanyKey, CreateType = (int)DeploymentJobType.DeployClient, Database = false, IosAdhoc = true, IosAppStore = true, BlackBerry = false, RevisionId = model.RevisionId, ServerUrlOptions = model.ServerUrlOptions }; var environments = new MongoRepository <Environment>(); job.ServerId = environments.Single(e => e.Name == "MobileBuildServer").Id; AddDeploymentJob(job); } if (model.DeployOptions == DeployOptions.Both || model.DeployOptions == DeployOptions.Server) { var rev = new MongoRepository <Revision>().GetById(model.RevisionId); var tagComponents = rev.Tag.Split('.'); bool useNewDeploymentService = (tagComponents.Length == 3) && (tagComponents[1] == "5") && (int.Parse(tagComponents[2]) >= 25); var job = new AddDeploymentJobModel { Android = false, CallBox = false, CompanyId = model.CompanyKey, CreateType = (int)DeploymentJobType.DeployServer, Database = true, IosAdhoc = false, IosAppStore = false, BlackBerry = false, RevisionId = model.RevisionId, ServerUrlOptions = model.ServerUrlOptions }; var environments = new MongoRepository <Environment>(); job.ServerId = model.ServerUrlOptions == ServerUrlOptions.Production ? environments.Single(e => e.Name == "ProductionV2").Id : environments.Single(e => e.Name == "Staging").Id; AddDeploymentJob(job); } return(RedirectToAction("Index")); }
private AddDeploymentJobModel GetAddJobModel(System.Func <Environment, bool> predicate) { var model = new AddDeploymentJobModel(); var companies = new MongoRepository <Company>(); var companyList = companies.OrderBy(c => c.CompanyName).Select(c => new SelectListItem { Value = c.CompanyKey, Text = c.CompanyName + " (" + c.CompanyKey + ")" }).ToList(); companyList.Add(new SelectListItem { Value = _allCompaniesKey, Text = "** All companies ** - USE CAREFULLY" }); model.ModelForView.Company = companyList; var companyDetailsList = companies.OrderBy(c => c.CompanyName).Select(c => new CompanyDetailsModel { CompanyKey = c.CompanyKey, CompanyDisplayName = c.CompanyName + " (" + c.CompanyKey + ")", LastKnownProductionVersion = c.LastKnownProductionVersion, LastKnownStagingVersion = c.LastKnownStagingVersion }).ToList(); model.ModelForView.CompanyDetails = companyDetailsList; var environments = new MongoRepository <Environment>(); model.ModelForView.Environment = environments.ToArray().Where(predicate).OrderBy(e => e.Name).Select(e => new SelectListItem { Value = e.Id, Text = e.GetDisplay() }); var revisions = new MongoRepository <Revision>(); model.ModelForView.Revision = revisions.Where(r => !r.Hidden && !r.Inactive).OrderBy(r => r.Tag).Select(r => new SelectListItem { Value = r.Id, Text = string.Format("{0} ({1})", r.Tag, r.Commit) }); model.Database = true; return(model); }
public ActionResult DeployClient(AddDeploymentJobModel model, FormCollection form) { foreach (var key in form.AllKeys) { if (key.StartsWith("checkbox_")) { // FormCollection will have "true,false" value for checked checkbox var isCompanySelected = form[key].Contains("true"); if (isCompanySelected) { var companyId = key.Replace("checkbox_", string.Empty); model.SelectedCompaniesId.Add(companyId); } } } AddDeploymentJob(model); return(RedirectToAction("Index")); }
private void AddDeploymentJob(AddDeploymentJobModel model, string email = null) { Action <Company> addACompanyAction = company => { var user = _session.Users.SingleOrDefault(x => x.UserName == User.Identity.Name); var userDisplayName = user != null ? user.CatchAll["Name"].AsString : "Unknown"; var deploy = new DeploymentJob { Id = Guid.NewGuid().ToString(), Date = DateTime.Now, Company = company, UserEmail = User.Identity.Name, UserName = userDisplayName }; var environments = new MongoRepository <Environment>(); deploy.Server = environments.Single(e => e.Id == model.ServerId); var revisions = new MongoRepository <Revision>(); deploy.Revision = revisions.Single(r => r.Id == model.RevisionId); var createType = (DeploymentJobType)model.CreateType; deploy.ServerSide = createType == DeploymentJobType.ServerPackage || createType == DeploymentJobType.DeployServer; deploy.ClientSide = !deploy.ServerSide; deploy.Type = createType; if (deploy.ServerSide && (createType == DeploymentJobType.ServerPackage)) { deploy.ServerSide = false; deploy.Database = false; } else if (deploy.ServerSide) { deploy.Database = model.Database; } else { deploy.ServerUrl = GetUrlFromModel(model, company); if (string.IsNullOrWhiteSpace(deploy.ServerUrl)) { throw new InvalidOperationException("Server url must be set"); } deploy.Android = model.Android; deploy.CallBox = model.CallBox; deploy.IosAdhoc = model.IosAdhoc; deploy.IosAppStore = model.IosAppStore; deploy.BlackBerry = model.BlackBerry; } company.LastKnownProductionVersion = null; company.LastKnownStagingVersion = null; new MongoRepository <Company>().Update(company); Repository.Add(deploy); }; var companies = new MongoRepository <Company>(); if (model.CompanyId == _allCompaniesKey) { foreach (var company in companies.Where(c => (c.Status == AppStatus.Production) || (c.Status == AppStatus.TestingNewVersion))) { addACompanyAction(company); } } else if (model.CreateType == (int)DeploymentJobType.ServerPackage) { var company = companies.Single(c => c.CompanyKey == "TaxiHailDemo"); addACompanyAction(company); } else if (model.SelectedCompaniesId.Any()) { foreach (var companyId in model.SelectedCompaniesId) { var company = companies.Single(c => c.CompanyKey == companyId); addACompanyAction(company); } } else { var company = companies.Single(c => c.CompanyKey == model.CompanyId); addACompanyAction(company); } }
public ActionResult CreateServerPackage(AddDeploymentJobModel model) { AddDeploymentJob(model); return(RedirectToAction("Index")); }