using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;

namespace Hero
{
    [ServiceContract]
    public interface IService1
    {

        [OperationContract]
        string DealerDetails(string dealerCode, string systemId, string deviceId, DateTime dateTimeClient, string token);

        [OperationContract]
        string UpdateToolData(string dealerCode, string systemId, string deviceId, string fwid,string Dataid,string Picid, string UserType,DateTime dateTimeClient, string token);

        [OperationContract]
        string UpdateSoftwareData(string dealerCode, string systemId, string deviceId, string Ver, string UserType, DateTime dateTimeClient, string token);

        [OperationContract]
        string ValidateDealer(string dealerCode, string password,  string ipAddress, string systemId, string deviceId, DateTime dateTimeClient, string token);

        [OperationContract]
        string ValidateDealerOtp(string dealerCode, string password, string ipAddress, string systemId, string deviceId, DateTime dateTimeClient, string token);

        
        [OperationContract]
        string GetOtpAws(string dealerCode, string systemId, string deviceId, DateTime dateTimeClient, string token,string deltype);

        
        [OperationContract]
        string GetOtp(string dealerCode, string systemId, string deviceId, DateTime dateTimeClient, string token);

        [OperationContract]
        string ValidateHdd(string systemId, string deviceId, DateTime dateTimeClient, string token);

        [OperationContract]
        string GetVersionDetails(string type, string systemId, string deviceId, DateTime dateTimeClient, string token);

        
        [OperationContract]
        string GetExportVersionDetails(string type, string systemId, string deviceId, DateTime dateTimeClient, string token);


       
        [OperationContract]
        string GetEolVersionDetails(string type, string systemId, string deviceId, DateTime dateTimeClient, string token);

        [OperationContract]
        byte[] GetBinFile(string version, string type, string systemId, string deviceId, DateTime dateTimeClient, string token);

        
        [OperationContract]
        byte[] GetEolBinFile(string version, string type, string systemId, string deviceId, DateTime dateTimeClient, string token);

       
        [OperationContract]
        byte[] GetExpBinFile(string version, string type, string systemId, string deviceId, DateTime dateTimeClient, string token);

        [OperationContract]
        string GetDatasetVersionDetails(string ecu_type, string model, string variant, string systemId, string deviceId, DateTime dateTimeClient, string token);

        [OperationContract]
        string GetDatasetVersionOnlineDetails(string ecu_type, string model, string variant,string calid, string systemId, string deviceId, DateTime dateTimeClient, string token);

        [OperationContract]
        byte[] GetDatasetFile(string ecu_type, string model, string variant,string filedata, string systemId, string deviceId, DateTime dateTimeClient, string token);

        [OperationContract]
        string GetDatasetFileVersionDetails(string ecu_type, string model, string variant,string vin_from,string vin_to, string systemId, string deviceId, DateTime dateTimeClient, string token);

        [OperationContract]
        byte[] GetDatasetFileData(string ecu_type, string model, string variant, string vin_from, string vin_to, string systemId, string deviceId, DateTime dateTimeClient, string token);

        [OperationContract]
        byte[] GetDatasetCksFile(string ecu_type, string model, string variant, string cksfile, string systemId, string deviceId, DateTime dateTimeClient, string token);

        [OperationContract]
        string ForgotOtp(string dealerCode, string systemId, string deviceId, DateTime dateTimeClient, string token);

        [OperationContract]
        string EmployeeDetails(string employeeCode,  DateTime dateTimeClient, string token);

        [OperationContract]
        string ValidateEmployee(string employeeCode, string employee_otp,  DateTime dateTimeClient, string token);

        [OperationContract]
        string ValidateEmployeeOtp(string employeeCode, string employee_otp, DateTime dateTimeClient, string token);

        [OperationContract]
        string GetEmployeeOtp(string employeeCode, DateTime dateTimeClient, string token);

        [OperationContract]
        string ForgotEmployeeOtp(string employeeCode,  DateTime dateTimeClient, string token);

        
        [OperationContract]
        string GetEmployeeDetails(string str_code, string systemId, string deviceId, string token);

        

        [OperationContract]
        byte[] GetApplicationBinFile(string systemId, string deviceId, DateTime dateTimeClient, string token);

       
        [OperationContract]
        byte[] GetExportApplicationBinFile(string systemId, string deviceId, DateTime dateTimeClient, string token);

       
        [OperationContract]
        byte[] GetEolApplicationBinFile(string systemId, string deviceId, DateTime dateTimeClient, string token);

        [OperationContract]
        string CheckApplicationUpdate(string version, string systemId, string deviceId, DateTime dateTimeClient, string token);

       
        [OperationContract]
        string CheckExportApplicationUpdate(string version, string systemId, string deviceId, DateTime dateTimeClient, string token);

       
        [OperationContract]
        string CheckEolApplicationUpdate(string version, string systemId, string deviceId, DateTime dateTimeClient, string token);

        [OperationContract]
        string SendOtp();

        [OperationContract]
        string GetBinFileSize(string ecu_type, string model, string variant, string dsname, string systemId, string deviceId, DateTime dateTimeClient, string token);

        [OperationContract]
        string GETEOLDTC(string variant, string systemId, string deviceId, DateTime dateTimeClient, string token);
      
        [OperationContract]
        string GETEOLVRIANT(string systemId, string deviceId, DateTime dateTimeClient, string token);
       
        [OperationContract]
        string GETEOLSOC(string variant, string systemId, string deviceId, DateTime dateTimeClient, string token);
       
        [OperationContract]
        string EolValdation(string user, string Password, string systemId, string deviceId, DateTime dateTimeClient, string token);
      
        [OperationContract]
        string GetEolFiSysEmpDetails(string Emp_Code, string systemId, string deviceId, DateTime dateTimeClient, string token);

        
        [OperationContract]
        byte[] GetTcuDataset(string Calid, string systemId, string deviceId, DateTime dateTimeClient, string token);

        [OperationContract]
        byte[] GetEngDataset(string vinvds ,string filename,string fileType, string systemId, string deviceId, DateTime dateTimeClient, string token);


        [OperationContract]
        string GETTCUDATASETFILE(string systemId, string deviceId, DateTime dateTimeClient, string token);

        [OperationContract]
        string GETEOLENGFILE(string systemId, string deviceId, DateTime dateTimeClient, string token);

        [OperationContract]
        string DELIUPRMFRZNCS(string SRNumber, string SystemId, string DeviceId, DateTime DateTimeClient, string Token);

        [OperationContract]
        string DELIUPRMFRZMM(string SRNumber, string SystemId, string DeviceId, DateTime DateTimeClient, string Token);

        [OperationContract]
        string DELIUPRMFRZKEYHIN(string SRNumber, string SystemId, string DeviceId, DateTime DateTimeClient, string Token);


        [OperationContract]
        string INSERTIUPRMDTC(string Calid, string Cvn, string Vin, string No_Of_Err, string DTC, string Dev_Type, string IUPRMFlag, string SRNumber, string NatureOfJob, string StatusMessage, string CurrentKM, string VehicleSaleDate, string StatusCode, string SRId, string ECUNumber, string JobCardNum, string ManufactureYear, string TCUNumber, string LevelOfService, string ManufactureMonth, string VehicleModel,string DelCode, string DelLoc, string SystemId, string DeviceId, DateTime DateTimeClient, string Token);

        [OperationContract]
        string INSERTVEHIUPRMDATA(string Calid, string Cvn, string Vin, string Ignition_Counter, string Denominator_Gen, string Denominator_Evap, string Numerator_Evap, string Denominator_O2Sensor, string Numerator_O2Sensor, string Denominator_Catalyst, string Numerator_Catalyst, string Denominator_O2Sensor_Secondary, string Numerator_O2Sensor_Secondary, string MIL_Status, string Distance_Travelled_Since_MIL, string Dev_Type, string IUPRMFlag, string SRNumber, string NatureOfJob, string StatusMessage, string CurrentKM, string VehicleSaleDate, string StatusCode, string SRId, string ECUNumber, string JobCardNum, string ManufactureYear, string TCUNumber, string LevelOfService, string ManufactureMonth, string VehicleModel,string DelCode, string DelLoc, string SystemId, string DeviceId, DateTime DateTimeClient, string Token);


        [OperationContract]
        string INSERTVEHIUPRMKEHIN(string Calid, string Cvn, string Vin, string DTC, string ECU, string Short_Term_Fuel_Trim_1, string Manifold_Absolute_Pressure, string Engine_speed, string Vehicle_Speed, string Ignition_Timing, string Intake_Air_Temperature, string Absolute_throttle_position, string Relative_throttle_position, string Engine_Oil_Temperature, string Dev_Type, string SRNumber, string CurrentKM, string StatusCode, string SRId, string ECUNumber, string JobCardNum, string ManufactureYear, string TCUNumber, string ManufactureMonth, string VehicleModel, string DelCode, string DelLoc, string SystemId, string DeviceId, DateTime DateTimeClient, string Token);

        [OperationContract]
        string INSERTVEHIUPRMMM(string Calid, string Cvn, string Vin, string DTC, string ECU, string Oxygen_Sensor1_Mixture_Control_Status, string Calculated_load_value_CLV, string Engine_Temperature, string Manifold_Pressure, string Engine_Speed, string Vehicle_Speed, string Applied_Spark_Advance, string Air_Temperature, string Throttle_position_calculated, string Slider_Sensor_Position, string Injection_Time, string Final_fueling_qty, string Oxygen_Sensor1_Control_Gain_Value, string ECU_Battery_voltage, string Oxygen_Sensor1_Voltage, string Duty_Cycle_Canister, string Atmospheric_Pressure, string Gear_Inserted_Neutral, string Crankshaft_Flywheel_State, string Side_Stand_State, string Clutch_State, string Run_Stop_Switch_State, string Spark_Ignition_Enable, string Selfadapt_strategy_calculation_state, string Engine_State, string Engine_Mode, string Slider_Status, string Selfadaptive_Fuel_Correction, string Distance_Travelled_Since_MIL_ON, string Time_Since_MIL_ON, string Dev_Type, string SRNumber, string CurrentKM, string StatusCode, string SRId, string ECUNumber, string JobCardNum, string ManufactureYear, string TCUNumber, string ManufactureMonth, string VehicleModel, string DelCode, string DelLoc, string SystemId, string DeviceId, DateTime DateTimeClient, string Token);

        [OperationContract]
        string INSERTVEHIUPRMNCS(string Calid, string Cvn, string Vin, string DTC, string ECU, string LS_Exbhk_0_State, string LS_Exbhk_1_State, string Calculated_Load_Value, string Coolant_Temperature, string Lambda_control_injection_time_correction_Cyl_Bank_1, string Relative_additive_adaptation_factor_exhaust_Bank_1, string Lambda_control_injection_time_correction_Cyl_Bank_2, string Relative_additive_adaptation_factor_exhaust_Bank_Bank_2, string Intake_manifold_Air_Pressure, string Engine_Speed, string Vehicle_Speed, string Ignition_Time_Advance, string Intake_Air_Temperature, string Mass_Air_Flow, string Absolute_Throttle_position, string Dev_Type, string SRNumber, string CurrentKM, string StatusCode, string SRId, string ECUNumber, string JobCardNum, string ManufactureYear, string TCUNumber, string ManufactureMonth, string VehicleModel, string DelCode, string DelLoc, string SystemId, string DeviceId, DateTime DateTimeClient, string Token);

        [OperationContract]
        string GetDel_Loc(string DelCode, string SystemId, string DeviceId, DateTime DateTimeClient, string Token);

        
        [OperationContract]
        byte[] GetDll(string File_Name,string systemId, string deviceId, DateTime dateTimeClient, string token);

        [OperationContract]
        string INSERTVEHIUPRMDATAJSON(string Calid, string Cvn, string Vin, string Ignition_Counter, string Denominator_Gen, string Denominator_Evap, string Numerator_Evap, string Denominator_O2Sensor, string Numerator_O2Sensor, string Denominator_Catalyst, string Numerator_Catalyst, string Denominator_O2Sensor_Secondary, string Numerator_O2Sensor_Secondary, string MIL_Status, string Distance_Travelled_Since_MIL, string Dev_Type, string IUPRMFlag, string SRNumber, string NatureOfJob, string StatusMessage, string CurrentKM, string VehicleSaleDate, string StatusCode, string SRId, string ECUNumber, string JobCardNum, string ManufactureYear, string TCUNumber, string LevelOfService, string ManufactureMonth, string VehicleModel, string DelCode, string DelLoc, string Jsonstring, string RawCanData, string SystemId, string DeviceId, DateTime DateTimeClient, string Token);


        //Services Required for HERO NextGen Software
        [OperationContract]
        string GetFileVersionFromServer(string SystemId, string DeviceId, DateTime DateTimeClient, string Token);

        [OperationContract]
        byte[] GetNextGenBinFile(string SystemId, string DeviceId, DateTime DateTimeClient, string Token, string Version);

        [OperationContract]
        string GetGen2FileVersionFromServer(string SystemId, string DeviceId, DateTime DateTimeClient, string Token);
        [OperationContract]
        byte[] GetGen2BinFile(string SystemId, string DeviceId, DateTime DateTimeClient, string Token, string Version);
    }

}
