public JsonResult DeploySmartContracts(DeployModel model) { var result = new ApiJsonResult(); try { using (var dbContext = new DatabaseContext()) { var networkIP = GetIP(model.Network); if (!string.IsNullOrEmpty(networkIP)) { if (string.IsNullOrEmpty(model.PublicKey) || string.IsNullOrEmpty(model.PrivateKey)) { var email = User?.Identity?.Name; var user = dbContext.Users.FirstOrDefault(x => x.Email == email); model.PublicKey = user?.PublicKey; model.PrivateKey = user?.PrivateKey; } using (Work work = new Work(networkIP)) { var transaction = work.Api.SendTransaction <CreateTransactionModel>(new CreateTransactionModel(new TransactionCreateModel { Amount = "0", Fee = "1", Source = model.PublicKey, Smart = new SmartCreateModel { Code = model.JavaCode } }), Base58Check.Base58CheckEncoding.DecodePlain(model.PrivateKey)); var source = Base58Check.Base58CheckEncoding.EncodePlain(transaction.Source); var target = Base58Check.Base58CheckEncoding.EncodePlain(transaction.Target); result.IsSuccess = true; result.Address = target; result.Message = "Ok!"; } } else { result.IsSuccess = false; result.Message = "Network is wrong."; } } } catch (Exception err) { result.IsSuccess = false; result.Message = "Error: " + err.Message; } return(new JsonResult { MaxJsonLength = Int32.MaxValue, Data = result, JsonRequestBehavior = JsonRequestBehavior.AllowGet }); }
public OperationResult Deploy(DeployModel deployModel) { var deployedSiteIds = new List <int>(); var sitesToBeRetractedFrom = new List <int>(); var sitesToBeDeployedTo = new List <int>(); var core = _coreHelper.GetCore(); var templateDto = core.TemplateItemRead(deployModel.Id); foreach (var site in templateDto.DeployedSites) { deployedSiteIds.Add(site.SiteUId); } var requestedSiteIds = deployModel .DeployCheckboxes .Select(deployCheckbox => deployCheckbox.Id) .ToList(); if (requestedSiteIds.Count == 0) { sitesToBeRetractedFrom.AddRange(templateDto.DeployedSites.Select(site => site.SiteUId)); } else { sitesToBeDeployedTo.AddRange(requestedSiteIds.Where(siteId => !deployedSiteIds.Contains(siteId))); } if (deployedSiteIds.Count != 0) { foreach (var site in templateDto.DeployedSites) { if (!requestedSiteIds.Contains(site.SiteUId)) { if (!sitesToBeRetractedFrom.Contains(site.SiteUId)) { sitesToBeRetractedFrom.Add(site.SiteUId); } } } } if (sitesToBeDeployedTo.Any()) { var mainElement = core.TemplateRead(deployModel.Id); mainElement.Repeated = 0; // We set this right now hardcoded, this will let the eForm be deployed until end date or we actively retract it. mainElement.EndDate = DateTime.Now.AddYears(10).ToUniversalTime(); mainElement.StartDate = DateTime.Now.ToUniversalTime(); core.CaseCreate(mainElement, "", sitesToBeDeployedTo, ""); } foreach (var siteUId in sitesToBeRetractedFrom) { core.CaseDelete(deployModel.Id, siteUId); } return(new OperationResult(true, LocaleHelper.GetString("ParamPairedSuccessfully", templateDto.Label))); }
public IActionResult TryMe([FromForm] string template, string random) { if (string.IsNullOrEmpty(random)) { //no javascript or javascript error } ViewBag.template = template; if (string.IsNullOrEmpty(template) || template.Trim().Length <= 0) { ViewBag.Error = "Please enter a valid GitHub repository URL."; return(View("TryMe")); } if (!Uri.IsWellFormedUriString(template, UriKind.Absolute)) { ViewBag.Error = "Please enter a valid GitHub repository URL."; return(View("TryMe")); } template = template.Trim(); if (!template.ToLower().StartsWith("https://github.com/")) { ViewBag.Error = "Please enter a valid GitHub repository URL."; return(View("TryMe")); } //at the time of fetching the configuration file from the repository there will be more validations var segments = new Uri(template).LocalPath.Split('/'); var ghOrg = segments[1]; var ghRepo = segments[2]; var details = new DeployModel(); details.ghOrg = ghOrg; details.ghRepo = ghRepo; details.ghReferer = template; try { if (User.Claims.Any(C => C.Type == "urn:github:name")) { string accessToken = HttpContext.GetTokenAsync("access_token").Result; details.ghToken = accessToken; } //retrieve the Github Configuration and detials var deploy = new DeployAssistant(details); var config = deploy.RetrieveGithubConfig(); details.configurationFile = config; HttpContext.Session.Set <DeployModel>("DEPLOY_MODEL", details); return(View("TryMe", config)); } catch (HttpRequestException ex) { if (ex.Message == System.Net.HttpStatusCode.Unauthorized.ToString() || ex.Message == System.Net.HttpStatusCode.Forbidden.ToString()) { //authenticate return(Redirect("/signin-gh?redirect=/deploy/tryme?template=" + template)); } else { ViewBag.Error = "Couldn't retrieve the file, server returned a " + ex.Message + " error."; return(View("TryMe")); } } catch (Exception ex) { ViewBag.Error = "Couldn't process the configuration file."; return(View("TryMe")); } }
public async Task <OperationResult> Deploy([FromBody] DeployModel deployModel) { return(await _templatesService.Deploy(deployModel)); }
public async Task <OperationResult> Deploy(DeployModel deployModel) { var sitesToBeRetractedFrom = new List <int>(); var sitesToBeDeployedTo = new List <int>(); var core = await _coreHelper.GetCore(); await using var dbContext = core.DbContextHelper.GetDbContext(); var language = await _userService.GetCurrentUserLanguage(); var templateDto = await core.TemplateItemRead(deployModel.Id, language); var deployedSiteIds = templateDto.DeployedSites.Select(site => site.SiteUId).ToList(); var requestedSiteIds = deployModel .DeployCheckboxes .Select(deployCheckbox => deployCheckbox.Id) .ToList(); if (requestedSiteIds.Count == 0) { sitesToBeRetractedFrom.AddRange(templateDto.DeployedSites.Select(site => site.SiteUId)); } else { sitesToBeDeployedTo.AddRange(requestedSiteIds.Where(siteId => !deployedSiteIds.Contains(siteId))); } if (deployedSiteIds.Count != 0) { foreach (var site in templateDto.DeployedSites) { if (!requestedSiteIds.Contains(site.SiteUId)) { if (!sitesToBeRetractedFrom.Contains(site.SiteUId)) { sitesToBeRetractedFrom.Add(site.SiteUId); } } } } if (sitesToBeDeployedTo.Any()) { foreach (var i in sitesToBeDeployedTo) { var site = await dbContext.Sites.SingleAsync(x => x.MicrotingUid == i); language = await dbContext.Languages.SingleAsync(x => x.Id == site.LanguageId); var mainElement = await core.ReadeForm(deployModel.Id, language); mainElement.Repeated = 0; // We set this right now hardcoded, // this will let the eForm be deployed until end date or we actively retract it. if (deployModel.FolderId != null) { mainElement.CheckListFolderName = dbContext.Folders.Single(x => x.Id == deployModel.FolderId) .MicrotingUid.ToString(); } mainElement.EndDate = DateTime.Now.AddYears(10).ToUniversalTime(); mainElement.StartDate = DateTime.Now.ToUniversalTime(); await core.CaseCreate(mainElement, "", i, deployModel.FolderId); } } foreach (var siteUId in sitesToBeRetractedFrom) { await core.CaseDelete(deployModel.Id, siteUId); } return(new OperationResult(true, _localizationService.GetStringWithFormat("ParamPairedSuccessfully", templateDto.Label))); }