public async Task <List <DeviceExtended> > GetAllUnAssignedDevice(int instituteId)
        {
            var dt = new List <DeviceExtended>();
            await _connection.OpenAsync();

            try
            {
                using (MySqlCommand cmd = new MySqlCommand("Get_AllUnAssignedDevice", _connection))
                {
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.AddWithValue("instituteIdVal", instituteId);
                    var dr = cmd.ExecuteReader();
                    while (dr.Read())
                    {
                        var row = new DeviceExtended();
                        row.Id           = Convert.ToInt32(dr["Id"]);
                        row.Model        = dr["Model"].ToString();
                        row.Description  = dr["description"].ToString();
                        row.SerialNumber = dr["SerialNumber"].ToString();
                        row.Version      = dr["Version"].ToString();
                        dt.Add(row);
                    }
                }
                return(dt);
            }
            catch
            {
                throw;
            }
            finally
            {
                await _connection.CloseAsync();
            }
        }
        //Download To Device
        private bool DownloadToDevice(DeviceExtended deviceextended, string selectedPcInterface)
        {
            DeviceSinamicsG sinamicsG = new DeviceSinamicsG(deviceextended);

            DownloadProvider downloadProvider  = deviceextended.device.DeviceItems[1].GetService <DownloadProvider>(); //TODO check
            DownloadConfigurationDelegate pre  = PreDownload;
            DownloadConfigurationDelegate post = PostDownload;

            ConnectionConfiguration  connConfiguration = downloadProvider.Configuration;
            ConfigurationMode        configurationMode = connConfiguration.Modes.Find("PN/IE");
            ConfigurationPcInterface pcInterface       = configurationMode.PcInterfaces.Find(selectedPcInterface, 1);
            ConfigurationSubnet      subnet            = pcInterface.Subnets.Find(sinamicsG.subnet.Name);
            IConfiguration           configuration     = subnet.Addresses.Find(sinamicsG.ipAddress);

            try
            {
                downloadProvider.Download(configuration, pre, post, DownloadOptions.Software);
            }
            catch (Exception ex)
            {
                return(false);
            }

            return(true);
        }
        public DeviceSinamicsG(DeviceExtended deviceextended)
        {
            this.deviceUserGroup = deviceextended.usergroup;

            this.device           = deviceextended.device;
            driveObject           = device.DeviceItems[1].GetService <DriveObjectContainer>().DriveObjects[0];
            safetyTelegram        = driveObject.Telegrams.Find(TelegramType.SafetyTelegram);
            mainTelegram          = driveObject.Telegrams.Find(TelegramType.MainTelegram);
            additionalTelegram    = driveObject.Telegrams.Find(TelegramType.AdditionalTelegram);
            supplementaryTelegram = driveObject.Telegrams.Find(TelegramType.SupplementaryTelegram);
            profinetInterface     = getProfinetInetface();
            ioConnector           = profinetInterface.IoConnectors[0];
            node               = profinetInterface.Nodes[0];
            Name               = device.DeviceItems[1].Name;
            PowerModule        = device.DeviceItems[2].TypeIdentifier;
            safetyAddress      = GetSafetyAddress();
            safetHwAddress_in  = getSafetyHwAddressIn();
            safetHwAddress_out = getSafetyHwAddressOut();
            hwAddress_in       = getHwAddressIn();
            hwAddress_out      = getHwAddressOut();
            hwAddress_supp_in  = getHwAddressSuppIn();
            hwAddress_supp_out = getHwAddressSuppOut();
            hwAddress_add_in   = getHwAddressAddIn();
            hwAddress_add_out  = getHwAddressAddOut();
            ioSystem           = ioConnector.ConnectedToIoSystem;
            subnet             = node.ConnectedSubnet;
            ipAddress          = node.GetAttribute("Address").ToString();
            pnDeviceNameAuto   = node.GetAttribute("PnDeviceNameAutoGeneration").ToString();
            pnDeviceName       = node.GetAttribute("PnDeviceName").ToString();
            PnDeviceNumber     = (int)ioConnector.GetAttribute("PnDeviceNumber");
            networkPorts       = GetNetworkPorts();
        }
        private bool SamePowermodule(string selectedDriveName, string treeView)
        {
            DeviceExtended selectedDevice = myOpenness.lsDeviceExtendeds.Find(d => d.driveName == selectedDriveName);
            DeviceExtended evalDevice     = myOpenness.lsDeviceExtendeds.Find(d => d.driveName == treeView);

            return(selectedDevice.powerModule == evalDevice.powerModule);
        }
        public async Task <List <DeviceExtended> > GetAllDetailDeviceByInstitute(int instituteId)
        {
            var dt = new List <DeviceExtended>();
            await _connection.OpenAsync();

            try
            {
                using (MySqlCommand cmd = new MySqlCommand("Get_AllDeviceByInstitute", _connection))
                {
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.AddWithValue("InstituteIdVal", instituteId);
                    var dr = cmd.ExecuteReader();
                    while (dr.Read())
                    {
                        var row = new DeviceExtended();
                        row.Id           = Convert.ToInt32(dr["deviceId"]);
                        row.Model        = dr["Model"].ToString();
                        row.Description  = dr["Description"].ToString();
                        row.SerialNumber = dr["SerialNumber"].ToString();
                        row.Version      = dr["Version"].ToString();
                        if (int.TryParse(dr["userId"].ToString(), out int userId))
                        {
                            row.UserId = userId;
                        }
                        row.UserName = dr["Username"].ToString();
                        if (int.TryParse(dr["InstituteId"].ToString(), out int InstituteId))
                        {
                            row.InstituteId = InstituteId;
                        }
                        row.InstituteName = dr["InstituteName"].ToString();
                        row.UserFullName  = dr["UserFullName"].ToString();
                        if (int.TryParse(dr["UserTypeId"].ToString(), out int UserTypeId))
                        {
                            row.UserTypeId = UserTypeId;
                        }
                        row.UserType = dr["UserType"].ToString();
                        dt.Add(row);
                    }
                }

                return(dt);
            }
            catch
            {
                throw;
            }
            finally
            {
                await _connection.CloseAsync();
            }
        }