示例#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);
                }
            }
        }
示例#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));
                }
            }
        }
示例#3
0
        protected MeasurementDTO MapMeasurement(IMeasurementModel model)
        {
            var modelDTO = new MeasurementDTO
            {
                Id = model.Id,
                MeasurementDate = model.MeasurementDate,
                Value           = String.Format("{0:0.##}", Math.Round(model.Value, 2)),
                ApplicationUser = model.ApplicationUser
            };

            return(modelDTO);
        }
示例#4
0
        private MeasurementViewModel MapMeasurementDTO(MeasurementDTO model)
        {
            var viewModel = new MeasurementViewModel
            {
                Id = model.Id,
                MeasurementDate = model.MeasurementDate,
                Value           = model.Value,
                Difference      = model.Difference,
                ApplicationUser = model.ApplicationUser
            };

            return(viewModel);
        }
示例#5
0
        /// <summary>
        /// Post Measurement
        /// </summary>
        /// <param name="measurement">measurement that should be posted to the web api</param>
        /// <returns>HttpStatusCode</returns>
        public async Task <HttpStatusCode> PostMeasurement(Measurement measurement)
        {
            MeasurementDTO m = new MeasurementDTO();

            m.SetMeasurementDTO(measurement);

            HttpResponseMessage response = await client.PostAsJsonAsync("measurements", m);

            // will throw an exception if not successful
            response.EnsureSuccessStatusCode();

            return(response.StatusCode);
        }
示例#6
0
        private static MeasurementDTO CreatePhonyMeasurement(int index)
        {
            MeasurementDTO dto = new MeasurementDTO();

            dto.DeployCode      = string.Format("DeployCode {0}", index);
            dto.MeasureDateTime = Parsing.ParseDate(string.Format("{0}/01/2017", index));
            dto.Conductivity    = Parsing.ParseDouble("");
            dto.DO               = Parsing.ParseDouble("");
            dto.Salinity         = Parsing.ParseDouble("");
            dto.SurfaceElevation = Parsing.ParseDouble("23.0");
            dto.Temperature      = Parsing.ParseDouble("");
            dto.Velocity         = Parsing.ParseDouble("");
            dto.pH               = Parsing.ParseDouble("");
            return(dto);
        }
        public async Task <IHttpActionResult> PostMeasurement(MeasurementDTO measurement)
        {
            /* Check if model is valid */
            if (!ModelState.IsValid)
            {
                var errors = ModelState.ToDictionary(
                    kvp => kvp.Key,
                    kvp => kvp.Value.Errors.Select(e => e.ErrorMessage).ToArray()
                    );
                return(Content(HttpStatusCode.BadRequest, errors));
            }

            IMeasurementDao dao = AdoFactory.Instance.GetMeasurementDao("wetr");
            await dao.InsertAsync(measurement.ToMeasurement());

            return(Content(HttpStatusCode.OK, new object()));
        }
示例#8
0
 private DataTab MeasurementsDataTab()
 {
     return(new DataTab("DET_Measurements", XlColor.White, MeasurementDTO.GetSchema(), generalDet.Measurements.Values));
 }