Operator IOperatorProfile.GetOperator(string operatorName, string trafficFileNumber)
        {
            Operator operatorFormWeb = new Operator();
            try
            {
                handHeldService.HandHeldService service = new VSDApp.handHeldService.HandHeldService();
                handHeldService.AuthHeader authorize = new VSDApp.handHeldService.AuthHeader();
                authorize.password = AppProperties.empPassword;
                authorize.userName = AppProperties.empUserName;
                service.authHeader = authorize;
                handHeldService.InquireCompanyProfileResponseItem responseItem = new VSDApp.handHeldService.InquireCompanyProfileResponseItem();
                operatorFormWeb = new Operator();
                responseItem = service.inquireCompanyProfile("H-PS-ICP-1", trafficFileNumber, null);

                if (responseItem.response.code.Equals("1000", StringComparison.CurrentCultureIgnoreCase))
                {
                    operatorFormWeb.OperatorOVRRScore = responseItem.company.riskRating.riskRatingName;

                    operatorFormWeb.OperatorName = responseItem.company.ownerName;
                    operatorFormWeb.OperatorNameAr = responseItem.company.ownerNameArabic;
                    operatorFormWeb.TrafficFileNumber = responseItem.company.trafficFileNumber;

                    Vehicle[] copyResponseVehicles = new Vehicle[responseItem.company.vehicles.Length];
                    int count = 0;
                    foreach (handHeldService.Vehicle responseVehicles in responseItem.company.vehicles)
                    {
                        copyResponseVehicles[count] = new Vehicle();
                        copyResponseVehicles[count].RiskRating = responseVehicles.riskRating.riskRatingName;
                        copyResponseVehicles[count].PlateNumber = responseVehicles.plateDetails.number;
                        copyResponseVehicles[count].PlateCode = responseVehicles.plateDetails.code;
                        copyResponseVehicles[count].PlateCategory = responseVehicles.plateDetails.category;
                        copyResponseVehicles[count].Emirate = ((IDBDataLoad)DBDataLoadManager.GetInstance()).GetPlateEmirate(responseVehicles.plateDetails.source);
                        copyResponseVehicles[count].PlateSource = responseVehicles.plateDetails.source;
                        count++;
                    }
                    operatorFormWeb.TopViolatingVehicles = copyResponseVehicles;
                }
                else if (responseItem.response.code.Equals("2000"))
                {
                    AppProperties.businessError = true;
                    AppProperties.errorMessageFromBusiness = responseItem.response.message;

                }
                else
                {
                    AppProperties.NotFoundError = true;
                    AppProperties.errorMessageFromBusiness = responseItem.response.message;
                   // System.Windows.Forms.MessageBox.Show(responseItem.response.message);
                    return null;
                }
            }
            catch (Exception ex)
            {
                AppProperties.IsException = true;
                AppProperties.errorMessageFromBusiness = ex.InnerException.Message;
                CommonUtils.WriteLog(ex.StackTrace);
                return null;
            }
            return operatorFormWeb;
        }
        Vehicle IVehicleProfile.GetVehicleProfileDetails(string country, string emirate, string plateCategory, string plateNumber, string plateCode)
        {
            try
            {
                AppProperties.isComprehensive = false;
                AppProperties.isSafety = true;

                handHeldService.HandHeldService service = new VSDApp.handHeldService.HandHeldService();
                handHeldService.AuthHeader header = new VSDApp.handHeldService.AuthHeader();
                header.password = AppProperties.empPassword;
                header.userName = AppProperties.empUserName;

                service.authHeader = header;


                handHeldService.VehiclePlate vehPlate = new VSDApp.handHeldService.VehiclePlate();
                vehPlate.category = (plateCategory != "") ? plateCategory.Trim() : "NA";
                vehPlate.code = (plateCode != "") ? plateCode.Trim() : "NA";
                vehPlate.number = plateNumber.Trim();
                vehPlate.source = ((IDBDataLoad)DBDataLoadManager.GetInstance()).GetPlateSourceCode((emirate == "") ? country : emirate).Trim();

                if (AppProperties.vehicle == null)
                {
                    AppProperties.vehicle = new Vehicle();
                }
                AppProperties.vehicle.Country = country.Trim();
                AppProperties.vehicle.Emirate = emirate.Trim();
                AppProperties.vehicle.PlateCategory = vehPlate.category.Trim();
                AppProperties.vehicle.PlateNumber = vehPlate.number.Trim();
                AppProperties.vehicle.PlateCode = vehPlate.code.Trim();



                handHeldService.InquireVehicleProfileResponseItem respItem = new VSDApp.handHeldService.InquireVehicleProfileResponseItem();
                service.Timeout = 180000;
                


                respItem = service.inquireVehicleProfile("H-PS-IVP-1", vehPlate);

                if (respItem.response.code.Equals("1000"))
                {
                    
                    AppProperties.vehicle.ChassisNumber = respItem.vehicle.chassisNumber;
                    AppProperties.vehicle.Year = respItem.vehicle.manufacturedYear;
                    if (AppProperties.vehicle.Operator == null)
                    {
                        AppProperties.vehicle.Operator = new Operator();
                    }
                    if (AppProperties.Selected_Resource == "English")
                    {
                        if (respItem.vehicle.manufacturer.name == null || respItem.vehicle.manufacturer.name == "")
                            AppProperties.vehicle.Make = respItem.vehicle.manufacturer.nameArabic;
                        else
                            AppProperties.vehicle.Make = respItem.vehicle.manufacturer.name;
                        if (respItem.vehicle.manufacturer.model == null || respItem.vehicle.manufacturer.model == "")
                            AppProperties.vehicle.Model = respItem.vehicle.manufacturer.modelArabic;
                        else
                            AppProperties.vehicle.Model = respItem.vehicle.manufacturer.model;
                        if (respItem.vehicle.owner.ownerName == null || respItem.vehicle.owner.ownerName == "")
                            AppProperties.vehicle.Operator.OperatorName = respItem.vehicle.owner.ownerNameArabic;
                        else
                            AppProperties.vehicle.Operator.OperatorName = respItem.vehicle.owner.ownerName;
                    }
                    else
                    {
                        if (respItem.vehicle.manufacturer.name != null || respItem.vehicle.manufacturer.name != "")
                            AppProperties.vehicle.Make = respItem.vehicle.manufacturer.nameArabic;
                        else
                            AppProperties.vehicle.Make = respItem.vehicle.manufacturer.name;
                        if (respItem.vehicle.manufacturer.model != null || respItem.vehicle.manufacturer.model != "")
                            AppProperties.vehicle.Model = respItem.vehicle.manufacturer.model;
                        else
                            AppProperties.vehicle.Model = respItem.vehicle.manufacturer.modelArabic;
                        if (respItem.vehicle.owner.ownerName != null || respItem.vehicle.owner.ownerName != "")
                            AppProperties.vehicle.Operator.OperatorName = respItem.vehicle.owner.ownerNameArabic;
                        else
                            AppProperties.vehicle.Operator.OperatorName = respItem.vehicle.owner.ownerName;
                    }




                    //AppProperties.vehicle.Operator.OperatorNameAr = respItem.vehicle.owner.ownerNameArabic;
                    AppProperties.vehicle.Operator.TrafficFileNumber = respItem.vehicle.owner.trafficFileNumber;
                    AppProperties.vehicle.PlateCategory = plateCategory;
                    AppProperties.vehicle.PlateCode = plateCode;
                    AppProperties.vehicle.PlateNumber = plateNumber;
                    if (respItem.vehicle.category.code == null)
                    {
                        respItem.vehicle.category.code = "NA";
                    }
                    AppProperties.vehicle.VehicleCategory = ((IDBDataLoad)DBDataLoadManager.GetInstance()).GetVehicleCategoryNameByCode(respItem.vehicle.category.code).Trim();
                    AppProperties.vehicle.VehicleCategoryAr = respItem.vehicle.category.nameArabic;
                    AppProperties.vehicle.VehicleOVRRScore = (null != respItem.vehicle.riskRating) ? respItem.vehicle.riskRating.riskRatingName : "";

                    //AppProperties.vehicle.Recomendation = ((null != respItem.plateConfiscationInstruction) ? ((respItem.plateConfiscationInstruction.Equals("false", StringComparison.CurrentCultureIgnoreCase)) ? "" : Resources.GetInstance().GetString("Confiscate")) : "");
                    AppProperties.vehicle.Recomendation = ((null != respItem.plateConfiscationInstruction) ? ((respItem.plateConfiscationInstruction.Equals("false", StringComparison.CurrentCultureIgnoreCase)) ? "" : "Confiscate") : "");
                    AppProperties.vehicle.Instruction = (null != respItem.inspectionInstruction) ? respItem.inspectionInstruction : "";

                    if (null != respItem.violations)
                    {

                        Violation[] violations = new Violation[respItem.violations.Length];

                        for (int i = 0; i < respItem.violations.Length; i++)
                        {
                            violations[i] = new Violation();
                            violations[i].ConfiscationReason = respItem.violations[i].plateConfiscatedReason;
                            violations[i].ConfiscationReasonAr = respItem.violations[i].plateConfiscatedReasonArabic;
                            violations[i].Inspector = respItem.violations[i].inspectorName;
                            violations[i].Inspection_location = respItem.violations[i].address;
                            violations[i].Inspection_locationAr = respItem.violations[i].addressArabic;
                            // violations[i].InspectionArea = respItem.violations[i].kloca;
                            violations[i].IsConfiscated = (respItem.violations[i].isPlateConfiscated != null) ? true : false;
                            violations[i].ViolationComments = respItem.violations[i].violation.comments;
                            violations[i].ViolationCommentsAr = respItem.violations[i].violation.commentsArabic;
                            violations[i].ViolationDueDays = respItem.violations[i].violation.dueDate;
                            violations[i].ViolationIssueDate = respItem.violations[i].time;
                            violations[i].ViolationID = (null == respItem.violations[i].violation.violationId) ? "0" : respItem.violations[i].violation.violationId.ToString();
                            violations[i].ViolationSeverity = respItem.violations[i].violation.severityLevel.name;
                            violations[i].ViolationSeverityAr = respItem.violations[i].violation.severityLevel.nameArabic;
                            //violations[i].ViolationSource = respItem.violations[i].violation.severityLevel.channel;
                            violations[i].ViolationStatus = respItem.violations[i].violation.statusName;
                            violations[i].ViolationTicketCode = respItem.violations[i].violation.ticketNumber;

                            //Driver Lic No

                            // violations[i]respItem.vehicle.driver.licenseNumber;
                            violations[i].RtaEmpID = respItem.violations[i].inspectorEmployeeId;
                            violations[i].DriverLicNo = respItem.violations[i].vehicle.driver.licenseNumber;




                            if (null != respItem.violations[i].violation.testTypeName)
                            {
                                if (!AppProperties.isComprehensive)
                                {

                                    AppProperties.isComprehensive = ((respItem.violations[i].violation.testTypeName.StartsWith("Comprehens", StringComparison.CurrentCultureIgnoreCase)) && !(violations[i].ViolationStatus.Equals("Closed", StringComparison.CurrentCultureIgnoreCase))) ? true : false;
                                }
                            }

                            // if (Resources.GetInstance().GetLocale().Equals(Resources.locale_EN))
                            if (AppProperties.Selected_Resource == "English")
                            {
                                //checking if a major or severe violation already exists
                                ((IDBManager)DBBusinessRuleManager.GetInstance()).GetRecommendation(violations[i].ViolationDueDays, violations[i].ViolationStatus, AppProperties.vehicle.Emirate, violations[i].ViolationSeverity);

                            }
                            else
                            {
                                //checking a major or severe violation already exists
                                ((IDBManager)DBBusinessRuleManager.GetInstance()).GetRecommendation(violations[i].ViolationDueDays, violations[i].ViolationStatus, AppProperties.vehicle.Emirate, violations[i].ViolationSeverityAr);
                            }

                            if (respItem.violations[i].violation.defects.Length > 0)
                            {
                                Violation.Defects[] defects = new Violation.Defects[respItem.violations[i].violation.defects.Length];
                                for (int j = 0; j < defects.Length; j++)
                                {
                                    int id;
                                    defects[j] = new Violation.Defects();
                                    defects[j].DefectID = ((id = ((IDBDataLoad)DBDataLoadManager.GetInstance()).GetDefectIDByCode(respItem.violations[i].violation.defects[j].code)) != -1) ? id : 0;

                                    //  string[][] cat = ((IDBDataLoad)DBDataLoadManager.GetInstance()).GetDefectMainCategory();


                                    if (violations[i].ViolationStatus.StartsWith("Open", StringComparison.CurrentCultureIgnoreCase))
                                    {
                                        AppProperties.previousDefectIDs.Add(defects[j].DefectID);
                                    }
                                    defects[j].DefectType = respItem.violations[i].violation.defects[j].type;
                                    defects[j].DefectName = ((IDBDataLoad)DBDataLoadManager.GetInstance()).GetDefectNameByID(respItem.violations[i].violation.defects[j].code);

                                    defects[j].DefectNameAr = ((IDBDataLoad)DBDataLoadManager.GetInstance()).GetDefectNameArByID(respItem.violations[i].violation.defects[j].code);
                                    defects[j].DefectCode = respItem.violations[i].violation.defects[j].code;
                                    defects[j].DefectValue = respItem.violations[i].violation.defects[j].comment;
                                    //  defects[j].DefectCategory = respItem.violations[i].violation.defects[j].category;
                                    string[][] cat = ((IDBDataLoad)DBDataLoadManager.GetInstance()).GetDefectMainCategoryByID(defects[j].DefectCode.ToString());

                                    if (cat.Length > 0)
                                    {
                                        defects[j].DefectCategory = cat[0][0].Trim();

                                    }


                                    if (null != respItem.violations[i].violation.defects[j].vehicleCategories && respItem.violations[i].violation.defects[j].vehicleCategories.Length > 0)
                                    {
                                        defects[j].DefectSeverity = respItem.violations[i].violation.defects[j].vehicleCategories[0].defectSeverityLevel.name;
                                        defects[j].DefectSeverityAr = respItem.violations[i].violation.defects[j].vehicleCategories[0].defectSeverityLevel.nameArabic;
                                    }



                                }
                                violations[i].Defect = defects;
                            }
                            
                        }
                        AppProperties.vehicle.Violations = violations;
                    }
                   

                }
                else if (respItem.response.code.Equals("2000"))
                {
                    AppProperties.businessError = true;
                    AppProperties.errorMessageFromBusiness = respItem.response.message;

                }
                else
                {
                   // System.Windows.Forms.MessageBox.Show(respItem.response.message);
                    AppProperties.vehicle = null;
                    return null;
                }

            }
            ////catch (NullReferenceException exNull)
            ////{
            ////    System.Windows.Forms.MessageBox.Show("Vehicle Info not found");
            ////    AppProperties.isOnline = false;
            ////    return null;
            ////}
            catch (Exception e)
            {
               // CommonUtils.WriteLog(e.StackTrace);
              //  System.Windows.Forms.MessageBox.Show(e.Message);
              //  AppProperties.isOnline = false;
                AppProperties.IsException = true;
                return null;
            }
            return AppProperties.vehicle;
        }
Beispiel #3
0
        bool IViolation.SubmitOfflineViolation()
        {
            try
            {
                List<Object> inspections;
                IDBDataLoad iDataLoad = ((IDBDataLoad)DBDataLoadManager.GetInstance());
                inspections = iDataLoad.GetStoredInspection();

                if (inspections.Count > 0)
                {
                    handHeldService.HandHeldService service = new VSDApp.handHeldService.HandHeldService();
                    handHeldService.SubmitOfflineViolationResponseItem[] resItem;
                    handHeldService.Inspection[] storedInspection = new VSDApp.handHeldService.Inspection[inspections.Count];

                    int inspectionID = -1;
                    int vehInfoID = -1;
                    int vioID = -1;

                    for (int i = 0; i < inspections.Count; i++)
                    {
                        storedInspection[i] = new VSDApp.handHeldService.Inspection();
                        string[] inspection = (string[])inspections[i];
                        inspectionID = Int32.Parse(inspection[0]);
                        vehInfoID = Int32.Parse(inspection[1]);
                        vioID = Int32.Parse(inspection[2]);
                        int locID = Int32.Parse(inspection[3]);

                        string locationExternalCode = iDataLoad.GetLocationCode(locID);

                        string[] vehicleInfo = iDataLoad.GetVehicleInfo(vehInfoID);
                        int vehicleCategoryID = Int32.Parse(vehicleInfo[1]);

                        String vehCatCode = iDataLoad.GetVehicleCategoryCode(vehicleCategoryID);

                        string[] ownerInfo = iDataLoad.GetOwnerInfo(vehInfoID);
                        string[] driverInfo = iDataLoad.GetDriverInfo(vehInfoID);
                        string[] violation = iDataLoad.GetViolation(vioID);
                        string[][] defectCodes = iDataLoad.GetDefectCodesForViolation(vioID);


                        storedInspection[i].time = DateTime.Parse(inspection[11].Trim());
                        storedInspection[i].address = locationExternalCode;


                        if (vioID != -1)
                        {
                            VSDApp.handHeldService.Defect[] defects = new VSDApp.handHeldService.Defect[defectCodes.Length];
                            for (int j = 0; j < defectCodes.Length; j++)
                            {
                                defects[j] = new VSDApp.handHeldService.Defect();
                                defects[j].code = defectCodes[j][0].Trim();
                                defects[j].comment = defectCodes[j][1].Trim();

                            }

                            handHeldService.Violation storedViolation = new VSDApp.handHeldService.Violation();
                            storedViolation.defects = defects;
                            storedViolation.comments = (violation[2] != "NULL") ? violation[2].Trim() : violation[3].Trim();
                            storedViolation.provisionalTicketNumber = violation[0].Trim();
                            storedInspection[i].violation = storedViolation;
                        }


                        storedInspection[i].channelPartInspectionCode = AppProperties.deviceCode;
                        storedInspection[i].inspectorName = (inspection[10].Trim());
                        storedInspection[i].inspectorEmployeeId = AppProperties.empID;
                        storedInspection[i].time = DateTime.Parse((inspection[11].Trim()));
                        storedInspection[i].timeSpecified = true;
                        storedInspection[i].frontPlateConditionName = (inspection[4].Trim() != "NULL") ? inspection[4].Trim() : "Good Condition";
                        storedInspection[i].rearPlateConditionName = (inspection[4].Trim() != "NULL") ? inspection[4].Trim() : "Good Condition";
                        storedInspection[i].isPlateConfiscated = inspection[6].Trim();
                        storedInspection[i].isRegistrationExpired = "F";


                        handHeldService.Vehicle veh = new VSDApp.handHeldService.Vehicle();
                        handHeldService.VehiclePlate plate = new VSDApp.handHeldService.VehiclePlate();

                        plate.source = iDataLoad.GetPlateSourceCode((vehicleInfo[4].Trim() != "") ? vehicleInfo[4].Trim() : vehicleInfo[6].Trim()).Trim();
                        plate.number = vehicleInfo[5].Trim();
                        plate.category = ("" != vehicleInfo[2].Trim()) ? vehicleInfo[2].Trim() : "NA";
                        plate.code = ("" != vehicleInfo[3].Trim()) ? vehicleInfo[3].Trim() : "NA";
                        veh.country = vehicleInfo[6].Trim();
                        veh.plateDetails = plate;

                        handHeldService.VehicleCategory vehCat = new VSDApp.handHeldService.VehicleCategory();
                        vehCat.code = vehCatCode.Trim();
                        veh.category = vehCat;

                        handHeldService.VehicleDriver driver = new VSDApp.handHeldService.VehicleDriver();
                        if (vioID != -1)
                        {
                            driver.licenseNumber = ("" != driverInfo[4].Trim()) ? driverInfo[4].Trim() : "NA";
                            driver.name = ("" != driverInfo[2].Trim()) ? driverInfo[2].Trim() : "NA";
                        }
                        else
                        {
                            driver.licenseNumber = "NA";
                            driver.name = "NA";
                        }

                        veh.driver = driver;
                        storedInspection[i].vehicle = veh;

                    }

                    handHeldService.AuthHeader header = new VSDApp.handHeldService.AuthHeader();
                    header.userName = AppProperties.empUserName;
                    header.password = AppProperties.empPassword;
                    service.authHeader = header;
                    service.Timeout = 180000;
                    resItem = service.submitOfflineViolation("RC123", storedInspection);


                    for (int j = 0; j < resItem.Length; j++)
                    {
                        if (resItem[j].response.code.Equals("1000"))
                        {
                            //System.Windows.MessageBox.Show(Resources.GetInstance().GetString("Offline Data Sysnchronized"));
                            if (AppProperties.Selected_Resource == "English")
                                System.Windows.MessageBox.Show("Offline Data Sysnchronized");
                            else
                                System.Windows.MessageBox.Show("تم مزامنة البيانات");
                            ClearInspections();
                            return true;
                        }
                        else if (resItem[j].response.code.Equals("2000"))
                        {
                            AppProperties.businessError = true;
                            AppProperties.errorMessageFromBusiness = resItem[j].response.message;
                            return true;

                        }
                        else
                        {
                            System.Windows.MessageBox.Show("Unable to upload data " + resItem[j].response.message);
                            break;
                        }

                    }


                }
                else
                {
                    if (AppProperties.Selected_Resource == "English")
                        System.Windows.MessageBox.Show("No offline data available");
                    else
                        System.Windows.MessageBox.Show("لا توجد بيانات للمزامنة");

                }


                return true;
            }
            catch (Exception e)
            {
                CommonUtils.WriteLog(e.StackTrace);
                System.Windows.MessageBox.Show("Unable to connect: " + e.Message);
                return false;
            }
        }
Beispiel #4
0
        bool IViolation.SubmitViolation()
        {
            IDBDataLoad iDataLoad = ((IDBDataLoad)DBDataLoadManager.GetInstance());

            try
            {

                handHeldService.SubmitViolationResponseItem respItem = new VSDApp.handHeldService.SubmitViolationResponseItem();
                handHeldService.Inspection inspection = new VSDApp.handHeldService.Inspection();

                handHeldService.AuthHeader header = new VSDApp.handHeldService.AuthHeader();


                inspection.time = System.DateTime.Now;
                inspection.timeSpecified = true;

                AppProperties.recordedViolation.ViolationIssueDate = inspection.time;
                string adr = iDataLoad.GetLocationCode(AppProperties.recordedViolation.InspectionArea.city, AppProperties.recordedViolation.InspectionArea.area, AppProperties.recordedViolation.InspectionArea.location);
                
                //Dubai,Deira,Dafza
                if (adr == "")
                {
                 //   string adr = iDataLoad.GetLocationCode(AppProperties.de, AppProperties.recordedViolation.InspectionArea.area, AppProperties.recordedViolation.InspectionArea.location);
                }
                inspection.address = (adr != null) ? adr : "247.00012";


                // inspection.channelPartInspectionCode = "01";

                Regex regExp = new Regex("[A-Za-z0-9]*");
                bool isEng = regExp.IsMatch(AppProperties.empUserName);


                if (isEng)
                {
                    header.userName = AppProperties.empUserName;
                    header.password = AppProperties.empPassword;
                    inspection.inspectorName = AppProperties.empUserName;

                }
                else
                {
                    header.userName = AppProperties.empUserName;
                    header.password = AppProperties.empPassword;
                    inspection.inspectorNameArabic = AppProperties.empUserName;
                }


                string serialNumber = "39";// Schweers.Sys.Device.SerialNumber;
                //empUserName code
                inspection.inspectorEmployeeId = AppProperties.empID;
                inspection.channelPartInspectionCode = AppProperties.deviceCode;


                //  isEng = regExp.IsMatch((AppProperties.recordedViolation.PlateCondition != null) ? AppProperties.recordedViolation.PlateCondition : (Resources.GetInstance().GetLocale().Equals(Resources.locale_EN)) ? "ENG" : "استعمال");
                isEng = true;

                if (AppProperties.Selected_Resource == "English")
                {
                    inspection.frontPlateConditionName = (AppProperties.recordedViolation.PlateCondition != null) ? AppProperties.recordedViolation.PlateCondition : "Good Condition";
                    inspection.rearPlateConditionName = (AppProperties.recordedViolation.PlateCondition != null) ? AppProperties.recordedViolation.PlateCondition : "Good Condition";
                }
                else
                {
                    inspection.frontPlateConditionName = (AppProperties.recordedViolation.PlateCondition != null) ? AppProperties.recordedViolation.PlateCondition : new CommonUtils().GetStringValue("Good Condition");
                    inspection.rearPlateConditionName = (AppProperties.recordedViolation.PlateCondition != null) ? AppProperties.recordedViolation.PlateCondition : new CommonUtils().GetStringValue("Good Condition");
                }


                handHeldService.Vehicle veh = new VSDApp.handHeldService.Vehicle();
                handHeldService.VehiclePlate plate = new VSDApp.handHeldService.VehiclePlate();

                plate.source = ((IDBDataLoad)DBDataLoadManager.GetInstance()).GetPlateSourceCode((AppProperties.vehicle.Emirate == "") ? AppProperties.vehicle.Country : AppProperties.vehicle.Emirate).Trim();
                if (plate.source == null || plate.source == "")
                {
                    plate.source = AppProperties.vehicle.PlateSource;
                }
                plate.number = AppProperties.vehicle.PlateNumber.ToString();
                plate.category = (AppProperties.vehicle.PlateCategory != "") ? AppProperties.vehicle.PlateCategory.Trim() : "NA";
                plate.code = (AppProperties.vehicle.PlateCode != "") ? AppProperties.vehicle.PlateCode : "NA";
                if (AppProperties.vehicle.Country == "")
                {
                    veh.country = AppProperties.defaultCountry;
                }
                else
                {
                    veh.country = AppProperties.vehicle.Country.Trim();
                }
                veh.plateDetails = plate;
                veh.chassisNumber = AppProperties.vehicle.ChassisNumber;
                handHeldService.VehicleOwner owner = new VSDApp.handHeldService.VehicleOwner();
                if (AppProperties.vehicle.Operator != null)
                    owner.ownerName = AppProperties.vehicle.Operator.OperatorName;
                else
                    owner.ownerName = "";
                owner.ownerNameArabic = AppProperties.vehicle.Operator.OperatorNameAr;
                owner.trafficFileNumber = AppProperties.vehicle.Operator.TrafficFileNumber;
                veh.owner = owner;
                handHeldService.VehicleCategory vehCat = new VSDApp.handHeldService.VehicleCategory();
                vehCat.code = ((IDBDataLoad)DBDataLoadManager.GetInstance()).GetVehicleCategoryCode((AppProperties.vehicle.VehicleCategory != null) ? AppProperties.vehicle.VehicleCategory : AppProperties.vehicle.VehicleCategoryAr).Trim();
                veh.category = vehCat;
                VSDApp.handHeldService.VehicleManufacturer manu = new VSDApp.handHeldService.VehicleManufacturer();
                manu.name = AppProperties.vehicle.Make;
                manu.model = AppProperties.vehicle.Model;
                veh.manufacturedYear = AppProperties.vehicle.Year;
                veh.manufacturer = manu;


                //create violation here


                if (null != AppProperties.recordedViolation.Defect && AppProperties.recordedViolation.Defect.Length > 0)
                {
                    //create violation
                    handHeldService.Violation violation = new VSDApp.handHeldService.Violation();
                    violation.comments = AppProperties.recordedViolation.ViolationComments;
                    violation.commentsArabic = AppProperties.recordedViolation.ViolationCommentsAr;
                    violation.provisionalTicketNumber = "?";

                    handHeldService.Defect[] defect = new VSDApp.handHeldService.Defect[AppProperties.recordedViolation.Defect.Length];

                    for (int i = 0; i < defect.Length; i++)
                    {
                        defect[i] = new VSDApp.handHeldService.Defect();
                        defect[i].comment = AppProperties.recordedViolation.Defect[i].DefectValue.Trim();
                        defect[i].code = iDataLoad.GetDefectCode(AppProperties.recordedViolation.Defect[i].DefectID).Trim();

                    }
                    violation.defects = defect;
                    inspection.violation = violation;
                    if (AppProperties.recordedViolation.IsConfiscated)
                    {
                        inspection.plateConfiscatedReason = (null != AppProperties.recordedViolation.ConfiscationReason) ? AppProperties.recordedViolation.ConfiscationReason : "NA";
                        inspection.plateConfiscatedReasonArabic = (null != AppProperties.recordedViolation.ConfiscationReasonAr) ? AppProperties.recordedViolation.ConfiscationReasonAr : "NA";
                    }

                    handHeldService.VehicleDriver driver = new VSDApp.handHeldService.VehicleDriver();
                    driver.name = ("" != AppProperties.vehicle.DriverName) ? AppProperties.vehicle.DriverName : "NA";
                    driver.nameArabic = ("" != AppProperties.vehicle.DriverNameAr) ? AppProperties.vehicle.DriverNameAr : "NA";
                    driver.licenseNumber = ("" != AppProperties.vehicle.DriverLicense) ? AppProperties.vehicle.DriverLicense : "NA";
                    veh.driver = driver;
                    //To Do
                    //inspection.isPlateConfiscated = (AppProperties.recordedViolation.IsConfiscated) ? "T" : "F";
                    inspection.isPlateConfiscated = "F";
                    inspection.isRegistrationExpired = "F";
                }
                else
                {

                   // inspection.isPlateConfiscated = (AppProperties.recordedViolation.IsConfiscated) ? "T" : "F";
                    inspection.isPlateConfiscated = "F";
                    inspection.isRegistrationExpired = "F";

                }



                inspection.vehicle = veh;
                //inspection.time = AppProperties.recordedViolation.ViolationIssueDate;

                handHeldService.HandHeldService hh = new VSDApp.handHeldService.HandHeldService();
                hh.authHeader = header;
                hh.Timeout = 180000;
                respItem = hh.submitViolation("RC123", inspection);



                if (respItem.response.code.Equals("1000"))
                {
                    //create violation here


                    if (null != AppProperties.recordedViolation.Defect && AppProperties.recordedViolation.Defect.Length > 0)
                    {
                        //System.Windows.Forms.MessageBox.Show("Violation Uploaded");
                        handHeldService.Inspection savedInspection = new VSDApp.handHeldService.Inspection();
                        savedInspection = respItem.savedInspection;
                        AppProperties.recordedViolation.ViolationDueDays = (savedInspection.violation.dueDateSpecified) ? savedInspection.violation.dueDate : AppProperties.recordedViolation.ViolationDueDays;
                        AppProperties.recordedViolation.ViolationSeverity = savedInspection.violation.severityLevel.value;
                        AppProperties.recordedViolation.ViolationTicketCode = savedInspection.violation.ticketNumber;
                        AppProperties.recordedViolation.ViolationTestType = savedInspection.violation.testTypeName;
                        AppProperties.vehicle.VehicleSuspensionDate = (savedInspection.violation.vehicleSuspensionDateSpecified) ? savedInspection.violation.vehicleSuspensionDate : AppProperties.vehicle.VehicleSuspensionDate;
                        AppProperties.vehicle.Operator.CompanySuspensionDate = (savedInspection.violation.ownerSuspensionDateSpecified) ? savedInspection.violation.ownerSuspensionDate : AppProperties.vehicle.Operator.CompanySuspensionDate;


                        return true;

                    }
                    else
                    {
                        /////////////////////////
                       // Ispe
                        
                        /////
                        AppProperties.isInspectionUploaded = true;
                        /*
                        if (AppProperties.Selected_Resource == "English")
                            System.Windows.MessageBox.Show("Inspection Uploaded")
                        else
                            System.Windows.MessageBox.Show("تم تسجيل عملية التفتيش بنجاح");*/
                        AppProperties.recordedViolation.ViolationTicketCode = respItem.response.message;
                        return true;
                    }

                }
                else if (respItem.response.code.Equals("2000"))
                {
                    AppProperties.businessError = true;
                    AppProperties.errorMessageFromBusiness = respItem.response.message;
                    return true;
                }
                else
                {
                   // System.Windows.MessageBox.Show(respItem.response.message);
                    //return ((IDBManager)DBOfflineDataManager.GetInstance()).StoreOfflineData();
                    AppProperties.NotFoundError = true;
                    AppProperties.errorMessageFromBusiness = respItem.response.message;
                    AppProperties.vehicle = null;
                    return false;
                }


            }
            catch (Exception e)
            {
              //  CommonUtils.WriteLog(e.StackTrace);
              //  System.Windows.MessageBox.Show("Unable to connect: " + e.Message);
                //and generate provisional id and rest of the information. if defects exists
                AppProperties.IsException = true;
                AppProperties.errorMessageFromBusiness = e.InnerException.Message;
                return ((IDBManager)DBOfflineDataManager.GetInstance()).StoreOfflineData();

            }


        }