private void CheckHeaders(XlWorksheet worksheet) { if (worksheet != null) { Schema s; List <string> h; if (worksheet.Name == "DET_Deployments") { s = DeploymentDTO.GetSchema(); } else if (worksheet.Name == "DET_Measurements") { s = MeasurementDTO.GetSchema(); } else if (worksheet.Name == "LIST_Sites") { s = SiteDTO.GetSchema(); } else if (worksheet.Name == "LIST_Sensors") { s = SensorDTO.GetSchema(); } else { return; } h = new List <string>(); List <string> hdrs = ExcelBaseDet.Headers(worksheet); bool bad = false; for (int i = 0; i < hdrs.Count - 1; i++) { string t = hdrs[i]; for (int j = i + 1; j < hdrs.Count; j++) { if (t == hdrs[j]) { bad = true; break; //inner } } if (bad) { break; //outer } } if (bad) { generalDet.ValidationIssues.Add(ValidationIssue.Code.DuplicateHeader, "Duplicate column header in " + worksheet.Name); } foreach (SchemaEntry c in s) { h.Add(c.LowerColumnName); } if (!ExcelBaseDet.HasHeaders(hdrs, h)) { generalDet.ValidationIssues.Add(ValidationIssue.Code.MissingFieldHeader, "Missing column header in " + worksheet.Name); } } }
private void LoadRow(string sheetName, Dictionary <string, string> values) { ValidationIssues issues = generalDet.ValidationIssues; if (sheetName == "DET_Deployments") { DeploymentDTO newDto = new DeploymentDTO(values); newDto.Validate(); //issues.Merge(newDto.ValidationIssues); issues.Add(newDto.ValidationIssues.Collapse("Deployment " + newDto.DeployCode)); bool success = generalDet.Deployments.Add(newDto); if (!success) { issues.Add(ValidationIssue.Code.NonUniqueKeyCode, string.Format("The deployment with code {0} is not unique.", newDto.LookupKey)); } } else if (sheetName == "DET_Measurements") { values["measuredatetime"] = ExcelBaseDet.ParseDate(values["measuredatetime"]); MeasurementDTO newDto = new MeasurementDTO(values); newDto.Validate(); //issues.Merge(newDto.ValidationIssues); issues.Add(newDto.ValidationIssues.Collapse("Measurement " + newDto.DeployCode + " " + newDto.MeasureDateTime)); bool success = generalDet.Measurements.Add(newDto); if (!success) { issues.Add(ValidationIssue.Code.NonUniqueKeyCode, string.Format("The measurment with code {0} is not unique.", newDto.LookupKey)); } } else if (sheetName == "LIST_Sites") { SiteDTO newDto = new SiteDTO(values); newDto.Validate(); //issues.Merge(newDto.ValidationIssues); issues.Add(newDto.ValidationIssues.Collapse("Site " + newDto.Key)); bool success = generalDet.Sites.Add(newDto); if (!success) { issues.Add(ValidationIssue.Code.NonUniqueKeyCode, string.Format("The site with code {0} is not unique.", newDto.LookupKey)); } } else if (sheetName == "LIST_Sensors") { InstrumentDTO newDto = new InstrumentDTO(values); newDto.Validate(); //issues.Merge(newDto.ValidationIssues); issues.Add(newDto.ValidationIssues.Collapse("Instrument " + newDto.Key)); bool success = generalDet.Instruments.Add(newDto); if (!success) { issues.Add(ValidationIssue.Code.NonUniqueKeyCode, string.Format("The instrument with code {0} is not unique.", newDto.LookupKey)); } } }
private static DeploymentDTO CreatePhonyDeployment(int index) { DeploymentDTO dto = new DeploymentDTO(); dto.DeployCode = string.Format("DeployCode {0}", index); dto.SiteId = string.Format("SiteID {0}", index); dto.InstrumentId = string.Format("SensorID {0}", index); dto.StartDate = Parsing.ParseDate(string.Format("{0}/01/2017", index)); dto.EndDate = Parsing.ParseDate(string.Format("{0}/15/2017", index)); dto.Comments = "No comment."; return(dto); }
public async void ShouldUpdateDeployment() { //Given var now = DateTime.Now; var companyName = "New One"; var calendar = await CalendarRepository.Add(now); await CompanyRepository.Add(new Company { Name = companyName }, true); var dbDeployment = new Deployment { Key = 1, StartDateKey = calendar.Key, StartTime = now.TimeOfDay, EndDateKey = calendar.Key, EndTime = now.TimeOfDay.Add(TimeSpan.FromHours(1)) }; await DeploymentRepository.Add(dbDeployment); // since we are modifying directly and not scoping, we'll need this Context.Entry(dbDeployment).State = EntityState.Detached; var controller = new DeploymentController( new Mock <ILogger <DeploymentController> >().Object, DeploymentRepository, CalendarRepository, CompanyRepository, VehicleRepository ); var deploymentDTO = new DeploymentDTO { Key = 1, StartTime = now, EndTime = now.AddHours(2), CompanyName = companyName }; //When var result = await controller.Update(deploymentDTO.Key, deploymentDTO); dbDeployment = await DeploymentRepository.Find(1); //Then var viewResult = Assert.IsType <OkObjectResult>(result); var model = Assert.IsType <DeploymentDTO>(viewResult.Value); Assert.NotNull(model); Assert.Equal(deploymentDTO.EndTime.Value.TimeOfDay, dbDeployment.EndTime); }
public async Task <IActionResult> Update(long key, [FromBody] DeploymentDTO value) { try { var deployment = await FillDeployment(value); await DeploymentRepository.Update(deployment); return(Ok(Mapper.Map <DeploymentDTO>(deployment))); } catch (Exception e) { Logger.LogError("Error updating deployment:\n{message}", e.Message); return(BadRequest(e.ToString())); } }
public async Task <IActionResult> PostAsync([FromBody] DeploymentDTO value) { try { var deployment = await FillDeployment(value); await DeploymentRepository.Add(deployment, false); await DeploymentRepository.SaveChanges(); return(Ok(Mapper.Map <DeploymentDTO>(deployment))); } catch (Exception e) { Logger.LogError("Error adding deployment:\n{message}", e.Message); return(BadRequest(e.ToString())); } }
public void ShouldMapDeployment() { //Given var now = DateTime.Now; var point = new GeoJSON.Net.Geometry.Point(new GeoJSON.Net.Geometry.Position(-45.12638971, 122.54672893563)); var deployment = new DeploymentDTO { StartTime = now, EndTime = now, Location = point }; //When var dbDeployment = Mapper.Map <Deployment>(deployment); //Then Assert.NotNull(dbDeployment); Assert.Equal(now.TimeOfDay, dbDeployment.StartTime); Assert.Equal(now.TimeOfDay, dbDeployment.EndTime); }
public void Validate() { Dictionary <string, List <Pair> > items = new Dictionary <string, List <Pair> >(); foreach (DeploymentDTO dto in Deployments.Values) { CheckReferentialIntegrity("deployment", "site", dto.SiteId, Sites.Keys, ValidationIssues); CheckReferentialIntegrity("deployment", "instrument", dto.InstrumentId, Instruments.Keys, ValidationIssues); DeploymentDateOrder(dto.StartDate, dto.EndDate); InstrumentDeploymentOverlap(dto.StartDate, dto.EndDate, dto.InstrumentId, items); } items = null; foreach (MeasurementDTO dto in Measurements.Values) { CheckReferentialIntegrity("measurement", "deployment", dto.DeployCode, Deployments.Keys, ValidationIssues); if (Deployments.ContainsKey(dto.DeployCode)) { DeploymentDTO deployment = Deployments[dto.DeployCode]; MeasurementDuringDeployment(dto.MeasureDateTime, deployment.StartDate, deployment.EndDate); } } }
private async Task <Deployment> FillDeployment(DeploymentDTO value) { var deployment = Mapper.Map <Deployment>(value); var endDateTask = value.EndTime.HasValue ? CalendarRepository.Find(value.EndTime.Value) : Task.FromResult <Calendar>(null); // Get the reference properties set up var companyTask = CompanyRepository.Find(value.CompanyName); var vehicleTask = VehicleRepository.Find(value.VehicleName); deployment.CompanyKey = (await companyTask).Key; // write this first so we don't start two operations deployment.EndDateKey = (await endDateTask)?.Key; var startDateTask = CalendarRepository.Find(value.StartTime); var vehicle = await vehicleTask ?? await VehicleRepository.Add(new Vehicle { Name = value.VehicleName }); deployment.VehicleKey = vehicle.Key; deployment.StartDateKey = (await startDateTask).Key; return(deployment); }
private DataTab DeploymentsDataTab() { return(new DataTab("DET_Deployments", XlColor.White, DeploymentDTO.GetSchema(), generalDet.Deployments.Values)); }
public ActionResult GetAllDeployments() { var depList = new List <DeploymentDTO>(); if (Session["CompanyId"] != null) { string customerId = Session["CompanyId"].ToString(); var subscriptions = SDKConnector.AzurePartnerManager.Customers.ById(customerId).Subscriptions.Get(); foreach (var sub in subscriptions.Items) { string token = Request.Headers["Authorization"]; var ResourceGroupList = new List <ResourceGroup>(); HttpClient clients = new HttpClient(); clients.BaseAddress = new Uri("https://management.azure.com"); clients.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token); clients.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); HttpResponseMessage results = clients.GetAsync("/subscriptions/" + sub.Id + "/resourcegroups?api-version=2015-01-01").Result; if (results.IsSuccessStatusCode) { string strJson = results.Content.ReadAsStringAsync().Result; //Deserialize the string to JSON object var jObj = (JObject)JsonConvert.DeserializeObject(strJson); ResourceGroupList = jObj["value"] .Select(item => new ResourceGroup { Name = (string)item["name"], Location = (string)item["location"], Id = (string)item["id"], }).ToList(); } foreach (var item in ResourceGroupList) { var dep = new List <DeploymentDTO>(); HttpResponseMessage DepRes = clients.GetAsync("/subscriptions/" + sub.Id + "/resourcegroups/" + item.Name + "/providers/Microsoft.Resources/deployments/?api-version=2017-05-10").Result; if (DepRes.IsSuccessStatusCode) { string strJson = DepRes.Content.ReadAsStringAsync().Result; //Deserialize the string to JSON object var jObj = (JObject)JsonConvert.DeserializeObject(strJson); dep = jObj["value"].Select(items => new DeploymentDTO { Name = (string)items["name"] }).ToList(); DeploymentDTO updateVNetDNS = dep.Find(d => d.Name == "updateVNetDNS"); DeploymentDTO CreateAdVms = dep.Find(d => d.Name == "CreateAdVms"); DeploymentDTO DeployPrimaryAd = dep.Find(d => d.Name == "DeployPrimaryAd"); if ((updateVNetDNS != null) && (DeployPrimaryAd != null) && (CreateAdVms != null)) { if (updateVNetDNS.Name == "updateVNetDNS" && DeployPrimaryAd.Name == "DeployPrimaryAd" && CreateAdVms.Name == "CreateAdVms") { foreach (var d in dep) { HttpResponseMessage depsList = clients.GetAsync("/subscriptions/" + sub.Id + "/resourceGroups/" + item.Name + "/providers/Microsoft.Resources/deployments/" + d.Name + "/operations?api-version=2016-02-01").Result; if (depsList.IsSuccessStatusCode) { string strJson1 = depsList.Content.ReadAsStringAsync().Result; //Deserialize the string to JSON object var jObj1 = (JObject)JsonConvert.DeserializeObject(strJson1); var deploymentList = new DeploymentDTO(); for (int i = 0; i < jObj1["value"].Count(); i++) { if (jObj1["value"][i]["properties"]["targetResource"] != null) { var resname = Convert.ToString(jObj1["value"][i]["properties"]["targetResource"]["resourceName"] == null ? "" : jObj1["value"][i]["properties"]["targetResource"]["resourceName"]); if (resname == "cb-vm") { depList.Add(new DeploymentDTO { Name = d.Name, SubscriptionID = sub.Id.ToString(), ResourceGroupName = item.Name }); } } } } } } } } } } } return(Json(depList, JsonRequestBehavior.AllowGet)); }