Example #1
0
        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);
                }
            }
        }
Example #2
0
        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));
                }
            }
        }
Example #3
0
        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);
        }
Example #8
0
        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);
        }
Example #10
0
 private DataTab DeploymentsDataTab()
 {
     return(new DataTab("DET_Deployments", XlColor.White, DeploymentDTO.GetSchema(), generalDet.Deployments.Values));
 }
Example #11
0
        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));
        }