public PumpModel1ParameterModel GetPumpModel1Parameter(Guid pumpId)
        {
            var result     = new PumpModel1ParameterModel();
            var mongoDB    = new ControlRoomMongoContext().GetDatabase();
            var collection = mongoDB.GetCollection <PumpStateModel1Mongo>();
            var pumpState  = collection.Find(t => t.PumpId == pumpId.ToString())
                             .SortByDescending(t => t.DateAndTime).FirstOrDefault();

            if (pumpState == null)
            {
                throw new DataValidationException("State data not found");
            }
            //var engineCommand = db.EngineCommand.Where(t => t.EngineId == engineId).FirstOrDefault();

            if (pumpState != null)
            {
                result.Flow                = pumpState.Flow;
                result.TempMotor           = pumpState.TempMotor;
                result.Pressure            = pumpState.Pressure;
                result.Flow                = pumpState.Flow;
                result.OverLoad            = pumpState.AmpL1;
                result.TimeMTNHour         = pumpState.TimeMTNHour;
                result.TimeMTNMin          = pumpState.TimeMTNMin;
                result.TimeMTNSec          = pumpState.TimeMTNSec;
                result.TempOver            = (int?)pumpState.TempOver;
                result.CalibrationPressure = (int?)pumpState.CalibrationPressure;
                result.CalibrationFlow     = (int?)pumpState.CalibrationFlow;
                result.OverLoadMax         = (int?)pumpState.OverLoad;
                result.SetTimeMTN          = (int?)pumpState.SetTimeMTN;
            }

            result.PumpId = pumpId;

            return(result);
        }
        public IActionResult UpdatePumpStateModel1Parameter(PumpModel1ParameterModel data)
        {
            if (!controlPumpService.CheckPermission(data.PumpId, PumpPermissionType.UpdateParameter))
            {
                throw new PermissionDeniedException();
            }
            controlPumpService.UpdatePumpStateModel1Parameter(data);

            return(Ok(new SuccessResult(null)));
        }
        public void UpdatePumpStateModel1Parameter(PumpModel1ParameterModel data)
        {
            var pump = pumpRepository.GetAll().Include(t => t.Connection).Where(t => t.Id == data.PumpId && t.IsActive == true).FirstOrDefault();

            if (pump == null)
            {
                throw new DataValidationException("Pump not found or inactive.");
            }
            if (pump.IsLock)
            {
                throw new DataValidationException("Pump is locked, Please contact administrator.");
            }
            //VerifyResourcePermission(pump.Id, OperationResource.ControlPump_UpdateParameter);
            var connection = pump.Connection;

            if (connection == null || string.IsNullOrEmpty(connection.DatabaseName) || string.IsNullOrEmpty(connection.Password) || string.IsNullOrEmpty(connection.Server) || string.IsNullOrEmpty(connection.Username))
            {
                throw new DataValidationException("Connection data is not complete.");
            }
            if (!pump.PumpModelId.HasValue)
            {
                throw new DataValidationException("Unknown pump model.");
            }
            if (string.IsNullOrEmpty(pump.DatabaseNaming))
            {
                throw new DataValidationException("Database naming is empty");
            }

            var sb = new SqlConnectionStringBuilder();

            sb.DataSource         = connection.Server;
            sb.InitialCatalog     = connection.DatabaseName;
            sb.IntegratedSecurity = false;
            sb.UserID             = connection.Username;
            sb.Password           = CryptoHelper.DecryptText(connection.Password);
            var connectionString = sb.ConnectionString;


            var sql = $"update Button set Button_Push = 1, Temp_Over_{pump.DatabaseNaming} = @p0, " +
                      $"Calibration_Pressure_{pump.DatabaseNaming} = @p1, " +
                      $"Calibration_Flow_{pump.DatabaseNaming} = @p2, " +
                      $"Over_Load_{pump.DatabaseNaming} = @p3, " +
                      $"Set_Time_MTN_{pump.DatabaseNaming} = @p4 ";

            SQLHelper.ExecuteNonQuery(connectionString, sql, data.TempOver, data.CalibrationPressure, data.CalibrationFlow, data.OverLoadMax, data.SetTimeMTN);
        }