public StrcutureSystem GetStrucutesByExcel() { StrcutureSystem structure = SetEmptyStrcuture(); FileInfo fileInfo = new FileInfo(filePath); ExcelPackage.LicenseContext = LicenseContext.NonCommercial; using (ExcelPackage excel = new ExcelPackage(fileInfo)) { ExcelWorksheet worksheet = excel.Workbook.Worksheets.FirstOrDefault(); if (worksheet != null) { int totalColumn = worksheet.Dimension.End.Column; int totalRow = worksheet.Dimension.End.Row; for (int i = 2; i <= totalColumn; i++) { //i = 2, perchè non mi serve controllare la colonna data_ora int indexHeadingRow = 2; // è 2 perchè sto assumendo che l'intestazione sia nella seconda riga. var value = worksheet.Cells[indexHeadingRow, i].Value != null ? worksheet.Cells[indexHeadingRow, i].Value.ToString() : string.Empty; if (!string.IsNullOrEmpty(value)) { var valueSplitted = GetLayout(value); switch (valueSplitted.Type.ToLower()) { case "cogenerator": { structure = SetCogeneratorList(valueSplitted, structure); break; } case "boiler": { structure = SetBoilerList(valueSplitted, structure); break; } case "energymeter": case "pump": { structure = SetSensorList(valueSplitted, structure); break; } case "heatpump": { structure = SetHeatPump(valueSplitted, structure); break; } //TODO ABSORBER default: throw new Exception("Type not found in row: " + indexHeadingRow.ToString() + " col: " + i.ToString()); } } } } } return(structure); }
public async Task <IActionResult> SaveValues([FromBody] object values, string SocietyName) { var json = values.ToString(); StrcutureSystem strcutureValues = JsonConvert.DeserializeObject <StrcutureSystem>(json); if (strcutureValues == null) { throw new Exception($"Values is missing"); } if (string.IsNullOrEmpty(SocietyName)) { throw new Exception($"Society Name is missing"); } SocietyModel society = await _societyServiceData.GetSocietyByName(SocietyName); if (society == null) { throw new Exception($"Society NOT FOUND!!"); } InstallationModel installation = await _installationServiceData.GetInstallationBySocietyId(society.Id); if (installation == null) { //Add installation = new InstallationModel { SocietyId = society.Id, Strucutres = strcutureValues }; } else { // update installation.Strucutres = UpdateStructure(installation.Strucutres, strcutureValues); } ResponseContent messageResponse = new ResponseContent() { Message = "Error saving the company" }; IActionResult response = BadRequest(messageResponse); var message = await _installationServiceData.SaveInstallation(installation); if (message != null) { var dic = new Dictionary <string, string>(); dic.Add("installation", JsonConvert.SerializeObject(values)); messageResponse = new ResponseContent("Save completed", dic); response = Ok(messageResponse); } return(response); }
private StrcutureSystem SetEmptyStrcuture() { StrcutureSystem structure = new StrcutureSystem(); structure.CogeneratorList = new List <Cogenerator>(); structure.BoilerList = new List <Boiler>(); structure.HeatPumpList = new List <HeatPump>(); structure.SensorList = new List <Sensor>(); return(structure); }
private StrcutureSystem SetCogeneratorList(LayoutColumn valueSplitted, StrcutureSystem structure) { var cogeFind = structure.CogeneratorList.Find(c => c.ModelName == valueSplitted.ModelName); if (cogeFind == null) { var item = new Cogenerator() { InstallationArea = valueSplitted.Area, ModelName = valueSplitted.ModelName }; if (!string.IsNullOrEmpty(valueSplitted.Value)) { if (item.CogeneratorValue == null) { item.CogeneratorValue = new List <CogeneratoreValue>(); } if (item.CogeneratorValue.Count == 0) { CogeneratoreValue cogVal = new CogeneratoreValue(); cogVal.LabelValues = new List <string>() { valueSplitted.Value }; item.CogeneratorValue.Add(cogVal); } } structure.CogeneratorList.Add(item); } else { if (!string.IsNullOrEmpty(valueSplitted.Value)) { var valueBag = cogeFind.CogeneratorValue.LastOrDefault(); if (valueBag != null && !valueBag.LabelValues.Contains(valueSplitted.Value)) { valueBag.LabelValues.Add(valueSplitted.Value); } } } return(structure); }
private StrcutureSystem SetBoilerList(LayoutColumn valueSplitted, StrcutureSystem structure) { var boilerFund = structure.BoilerList.Find(c => c.ModelName == valueSplitted.ModelName); if (boilerFund == null) { var item = new Boiler() { InstallationArea = valueSplitted.Area, ModelName = valueSplitted.ModelName }; if (!string.IsNullOrEmpty(valueSplitted.Value)) { if (item.BoilerValue == null) { item.BoilerValue = new List <BoilerValue>(); } if (item.BoilerValue.Count == 0) { BoilerValue boilerValue = new BoilerValue(); boilerValue.LabelValues = new List <string>() { valueSplitted.Value }; item.BoilerValue.Add(boilerValue); } } structure.BoilerList.Add(item); } else { if (!string.IsNullOrEmpty(valueSplitted.Value)) { var valueBag = boilerFund.BoilerValue.LastOrDefault(); if (valueBag != null && !valueBag.LabelValues.Contains(valueSplitted.Value)) { valueBag.LabelValues.Add(valueSplitted.Value); } } } return(structure); }
private StrcutureSystem SetHeatPump(LayoutColumn valueSplitted, StrcutureSystem structure) { var heatPumpFund = structure.HeatPumpList.Find(c => c.ModelName == valueSplitted.ModelName); if (heatPumpFund == null) { var item = new HeatPump() { InstallationArea = valueSplitted.Area, ModelName = valueSplitted.ModelName }; if (!string.IsNullOrEmpty(valueSplitted.Value)) { if (item.HeatPumpValue == null) { item.HeatPumpValue = new List <HeatPumpValue>(); } if (item.HeatPumpValue.Count == 0) { HeatPumpValue heatPumpValue = new HeatPumpValue(); heatPumpValue.LabelValues = new List <string>() { valueSplitted.Value }; item.HeatPumpValue.Add(heatPumpValue); } } structure.HeatPumpList.Add(item); } else { if (!string.IsNullOrEmpty(valueSplitted.Value)) { var valueBag = heatPumpFund.HeatPumpValue.LastOrDefault(); if (valueBag != null && !valueBag.LabelValues.Contains(valueSplitted.Value)) { valueBag.LabelValues.Add(valueSplitted.Value); } } } return(structure); }
private StrcutureSystem SetValuesByExcel() { StrcutureSystem structure = GetStrucutesByExcel(); FileInfo fileInfo = new FileInfo(filePath); ExcelPackage.LicenseContext = LicenseContext.NonCommercial; using (ExcelPackage excel = new ExcelPackage(fileInfo)) { ExcelWorksheet worksheet = excel.Workbook.Worksheets.FirstOrDefault(); if (worksheet != null) { int totalColumn = worksheet.Dimension.End.Column; int totalRow = worksheet.Dimension.End.Row; for (int col = 1; col <= totalColumn; col++) { int indexHeadingRow = 2; // è 2 perchè sto assumendo che l'intestazione sia nella seconda riga. var valueColumn = worksheet.Cells[indexHeadingRow, col].Value != null ? worksheet.Cells[indexHeadingRow, col].Value.ToString() : string.Empty; if (!string.IsNullOrEmpty(valueColumn)) { var valueColumnSplitted = GetLayout(valueColumn); string labelValue = valueColumnSplitted.Value; string labelType = valueColumnSplitted.Type; if (!string.IsNullOrEmpty(labelType)) { for (int row = 3; row <= totalRow; row++) { var value = worksheet.Cells[row, col].Value != null ? worksheet.Cells[row, col].Value.ToString() : string.Empty; if (value != null) { switch (labelType.ToLower()) { case "data_ora": { structure = SetDateInAllStructure(structure, value); break; } case "cogenerator": { structure = SetValueInCogeneratorValueList(valueColumnSplitted, structure, value, row); break; } case "boiler": { structure = SetValueInBoilerValueList(valueColumnSplitted, structure, value, row); break; } case "heatpump": { structure = SetValueInHeatPupValueList(valueColumnSplitted, structure, value, row); break; } case "energymeter": case "pump": { structure = SetValueInSensorValueList(valueColumnSplitted, structure, value, row); break; } //todo absorber default: throw new Exception(); } } } } } } } } return(structure); }
private StrcutureSystem SetSensorList(LayoutColumn valueSplitted, StrcutureSystem structure) { var sensorFound = new Sensor(); if (valueSplitted.Value != "CMD") { if (structure.SensorList.Count() > 0) { foreach (string usedBy in valueSplitted.Father) { sensorFound = structure.SensorList.Find(c => c.ModelName == valueSplitted.ModelName && c.UsedBy.Contains(usedBy)); if (sensorFound != null) { break; } } } } else { sensorFound = structure.SensorList.Find(c => c.ModelName == valueSplitted.ModelName); } if (sensorFound == null || structure.SensorList.Count() == 0) { var item = new Sensor() { InstallationArea = valueSplitted.Area, ModelName = valueSplitted.ModelName }; item.UsedBy = new List <string>(); item.UsedBy = valueSplitted.Father; if (valueSplitted.Type == "energymeter") { if (item.EnergyMeterList == null) { item.EnergyMeterList = new List <EnergyMeter>(); EnergyMeter energyMeter = new EnergyMeter(); energyMeter.LabelValues = new List <string>() { valueSplitted.Value }; item.EnergyMeterList.Add(energyMeter); } else { var valueBag = sensorFound.EnergyMeterList.LastOrDefault(); valueBag.LabelValues.Add(valueSplitted.Value); } } if (valueSplitted.Type == "pump") { if (item.PumpSensorList == null) { item.PumpSensorList = new List <PumpSensor>(); PumpSensor pump = new PumpSensor(); pump.LabelValues = new List <string>() { valueSplitted.Value }; item.PumpSensorList.Add(pump); } else { var valueBag = sensorFound.PumpSensorList.LastOrDefault(); valueBag.LabelValues.Add(valueSplitted.Value); } } structure.SensorList.Add(item); } else { if (!string.IsNullOrEmpty(valueSplitted.Value)) { if (valueSplitted.Type == "energymeter") { var valueBag = sensorFound.EnergyMeterList.LastOrDefault(); if (valueBag != null && !valueBag.LabelValues.Contains(valueSplitted.Value)) { valueBag.LabelValues.Add(valueSplitted.Value); } } if (valueSplitted.Type == "pump") { var valueBag = sensorFound.PumpSensorList.LastOrDefault(); if (valueBag != null && !valueBag.LabelValues.Contains(valueSplitted.Value)) { valueBag.LabelValues.Add(valueSplitted.Value); } if (valueBag != null && valueSplitted.Value == "CMD") { foreach (string s in valueSplitted.Father) { if (!sensorFound.UsedBy.Contains(s)) { sensorFound.UsedBy.Add(s); } } } } } } return(structure); }
private StrcutureSystem SetValueInCogeneratorValueList(LayoutColumn valueColumnSplitted, StrcutureSystem structure, string value, int index) { var cogeFound = structure.CogeneratorList.Find(c => c.ModelName == valueColumnSplitted.ModelName); if (cogeFound != null) { var valueBag = cogeFound.CogeneratorValue[index - 3]; if (valueBag != null) { switch (valueColumnSplitted.Value) { case "PotGe": valueBag.GeneratorePower = Convert.ToDouble(value); break; case "Cosfi": valueBag.Cosphi = Convert.ToDouble(value); break; case "CoGeL1": case "CoGeL2": case "CoGeL3": { if (valueBag.GeneratorCurrent == null) { valueBag.GeneratorCurrent = new List <double>(); } valueBag.GeneratorCurrent.Add(Convert.ToDouble(value)); } break; case "TeGeL1": case "TeGeL2": case "TeGeL3": { if (valueBag.GeneratorVoltage == null) { valueBag.GeneratorVoltage = new List <double>(); } valueBag.GeneratorVoltage.Add(Convert.ToDouble(value)); } break; } } } return(structure); }
private StrcutureSystem SetDateInAllStructure(StrcutureSystem structure, string value) { if (structure.CogeneratorList.Count > 0) { foreach (var cogenerator in structure.CogeneratorList) { if (cogenerator.CogeneratorValue.Count > 0) { if (cogenerator.CogeneratorValue.FirstOrDefault().DetectionDate == DateTime.MinValue) { cogenerator.CogeneratorValue.FirstOrDefault().DetectionDate = DateTime.Parse(value); } else { var backup = cogenerator.CogeneratorValue.FirstOrDefault(); CogeneratoreValue newBag = new CogeneratoreValue(); newBag.LabelValues = new List <string>(); newBag.LabelValues = backup.LabelValues; newBag.DetectionDate = DateTime.Parse(value); cogenerator.CogeneratorValue.Add(newBag); } } } } if (structure.SensorList.Count > 0) { foreach (var sensor in structure.SensorList) { if (sensor.PumpSensorList != null && sensor.PumpSensorList.Count > 0) { if (sensor.PumpSensorList.FirstOrDefault().DetectionDate == DateTime.MinValue) { sensor.PumpSensorList.FirstOrDefault().DetectionDate = DateTime.Parse(value); } else { var backup = sensor.PumpSensorList.FirstOrDefault(); PumpSensor newBag = new PumpSensor(); newBag.LabelValues = new List <string>(); newBag.LabelValues = backup.LabelValues; newBag.DetectionDate = DateTime.Parse(value); sensor.PumpSensorList.Add(newBag); } } if (sensor.EnergyMeterList != null && sensor.EnergyMeterList.Count > 0) { if (sensor.EnergyMeterList.FirstOrDefault().DetectionDate == DateTime.MinValue) { sensor.EnergyMeterList.FirstOrDefault().DetectionDate = DateTime.Parse(value); } else { var backup = sensor.EnergyMeterList.FirstOrDefault(); EnergyMeter newBag = new EnergyMeter(); newBag.LabelValues = new List <string>(); newBag.LabelValues = backup.LabelValues; newBag.DetectionDate = DateTime.Parse(value); sensor.EnergyMeterList.Add(newBag); } } } } if (structure.BoilerList.Count > 0) { foreach (var boiler in structure.BoilerList) { if (boiler.BoilerValue.Count > 0) { if (boiler.BoilerValue.FirstOrDefault().DetectionDate == DateTime.MinValue) { boiler.BoilerValue.FirstOrDefault().DetectionDate = DateTime.Parse(value); } else { var backup = boiler.BoilerValue.FirstOrDefault(); BoilerValue newBag = new BoilerValue(); newBag.LabelValues = new List <string>(); newBag.LabelValues = backup.LabelValues; newBag.DetectionDate = DateTime.Parse(value); boiler.BoilerValue.Add(newBag); } } } } if (structure.HeatPumpList.Count > 0) { foreach (var heatPump in structure.HeatPumpList) { if (heatPump.HeatPumpValue.Count > 0) { if (heatPump.HeatPumpValue.FirstOrDefault().DetectionDate == DateTime.MinValue) { heatPump.HeatPumpValue.FirstOrDefault().DetectionDate = DateTime.Parse(value); } else { var backup = heatPump.HeatPumpValue.FirstOrDefault(); HeatPumpValue newBag = new HeatPumpValue(); newBag.LabelValues = new List <string>(); newBag.LabelValues = backup.LabelValues; newBag.DetectionDate = DateTime.Parse(value); heatPump.HeatPumpValue.Add(newBag); } } } } //TODO ABSORBER return(structure); }
private StrcutureSystem SetValueInBoilerValueList(LayoutColumn valueColumnSplitted, StrcutureSystem structure, string value, int row) { var boilerFound = structure.BoilerList.Find(c => c.ModelName == valueColumnSplitted.ModelName); if (boilerFound != null) { var valueBag = boilerFound.BoilerValue[row - 3]; if (valueBag != null) { switch (valueColumnSplitted.Value) { case "TFl": valueBag.SetPointTemperatureSend = Convert.ToDouble(value); break; case "Mod": valueBag.ModulationFlame = Convert.ToDouble(value); break; case "PT1Te": valueBag.PtTemperatureSend = Convert.ToDouble(value); break; case "StCBu": valueBag.BurnerState = Convert.ToDouble(value); break; } } } return(structure); }
private StrcutureSystem SetValueInHeatPupValueList(LayoutColumn valueColumnSplitted, StrcutureSystem structure, string value, int row) { var heatPump = structure.HeatPumpList.Find(c => c.ModelName == valueColumnSplitted.ModelName); if (heatPump != null) { var valueBag = heatPump.HeatPumpValue[row - 3]; if (valueBag != null) { switch (valueColumnSplitted.Value) { case "Amp": valueBag.CurrentAbsorbed = Convert.ToDouble(value); break; case "FlRate": valueBag.PompFlow = Convert.ToDouble(value); break; case "PwrLO": valueBag.InstantPower = Convert.ToDouble(value); break; } } } return(structure); }
private StrcutureSystem SetValueInSensorValueList(LayoutColumn valueColumnSplitted, StrcutureSystem structure, string value, int row) { var sensorFound = new Sensor(); if (structure.SensorList.Count() > 0) { foreach (string usedBy in valueColumnSplitted.Father) { sensorFound = structure.SensorList.Find(c => c.ModelName == valueColumnSplitted.ModelName && c.UsedBy.Contains(usedBy)); if (sensorFound != null) { break; } } } if (sensorFound != null) { if (valueColumnSplitted.Type == "energymeter") { var valueBag = sensorFound.EnergyMeterList[row - 3]; if (valueBag != null) { switch (valueColumnSplitted.Value) { case "EgH": valueBag.Energy = Convert.ToDouble(value); break; case "Fi": valueBag.M3Instant = Convert.ToDouble(value); break; case "P": valueBag.InstantPower = Convert.ToDouble(value); break; case "TFl": valueBag.TemperatureSend = Convert.ToDouble(value); break; case "TRt": valueBag.TemperatureBack = Convert.ToDouble(value); break; case "Vlm": valueBag.M3Total = Convert.ToDouble(value); break; case "DT": valueBag.DeltaTemperature = Convert.ToDouble(value); break; } } } if (valueColumnSplitted.Type == "pump") { var valueBag = sensorFound.PumpSensorList[row - 3]; if (valueBag != null) { switch (valueColumnSplitted.Value) { case "CMD": { if (valueBag.CommandValue == null) { valueBag.CommandValue = new List <CommandPump>(); CommandPump command = new CommandPump(); command.Father = valueColumnSplitted.Father.FirstOrDefault(); // non funziona se ci sono piu padri command.Value = Convert.ToDouble(value); valueBag.CommandValue.Add(command); } else { var search = valueBag.CommandValue.Find(c => c.Father == valueColumnSplitted.Father.FirstOrDefault()); if (search != null) { search.Value = Convert.ToDouble(value); } else { CommandPump command = new CommandPump(); command.Father = valueColumnSplitted.Father.FirstOrDefault(); // non funziona se ci sono piu padri command.Value = Convert.ToDouble(value); valueBag.CommandValue.Add(command); } } break; } case "TMnFI": valueBag.TemperatureSend = Convert.ToDouble(value); break; case "TMnRt": valueBag.TemperatureBack = Convert.ToDouble(value); break; case "TOa": valueBag.TemperatureExternal = Convert.ToDouble(value); break; } } } } return(structure); }
private StrcutureSystem UpdateStructure(StrcutureSystem lastStrucutre, StrcutureSystem newStrucutre) { if (lastStrucutre == null || newStrucutre == null) { throw new Exception("structures fields are mandatory"); } foreach (Boiler machine in newStrucutre.BoilerList) { var lastMachine = lastStrucutre.BoilerList.Where(x => x.ModelName == machine.ModelName).FirstOrDefault(); if (lastMachine != null) { foreach (BoilerValue value in machine.BoilerValue) { lastMachine.BoilerValue.Add(value); } } else { lastStrucutre.BoilerList.Add(machine); } } foreach (Cogenerator machine in newStrucutre.CogeneratorList) { var lastMachine = lastStrucutre.CogeneratorList.Where(x => x.ModelName == machine.ModelName).FirstOrDefault(); if (lastMachine != null) { foreach (CogeneratoreValue value in machine.CogeneratorValue) { lastMachine.CogeneratorValue.Add(value); } } else { lastStrucutre.CogeneratorList.Add(machine); } } foreach (HeatPump machine in newStrucutre.HeatPumpList) { var lastMachine = lastStrucutre.HeatPumpList.Where(x => x.ModelName == machine.ModelName).FirstOrDefault(); if (lastMachine != null) { foreach (HeatPumpValue value in machine.HeatPumpValue) { lastMachine.HeatPumpValue.Add(value); } } else { lastStrucutre.HeatPumpList.Add(machine); } } foreach (Sensor machine in newStrucutre.SensorList) { var lastSensor = lastStrucutre.SensorList.Where(x => x.ModelName == machine.ModelName).FirstOrDefault(); if (lastSensor != null) { if (machine.EnergyMeterList != null && machine.EnergyMeterList.Count > 0) { foreach (var energyMeter in machine.EnergyMeterList) { lastSensor.EnergyMeterList.Add(energyMeter); } } if (machine.PumpSensorList != null && machine.PumpSensorList.Count > 0) { foreach (var pumpSensor in machine.PumpSensorList) { lastSensor.PumpSensorList.Add(pumpSensor); } } } else { lastStrucutre.SensorList.Add(machine); } } return(lastStrucutre); }