Ejemplo n.º 1
0
        /// <summary>
        /// Indicates whether the <see cref="DbDevice"/> differs from the <see cref="Device"/>, thereby requiring the <see cref="DbDevice"/> to be updated in the database.
        /// </summary>
        /// <param name="dbDevice">The <see cref="DbDevice"/> to be evaluated.</param>
        /// <param name="device">The <see cref="Device"/> to compare against.</param>
        /// <returns></returns>
        public static bool DbDeviceRequiresUpdate(DbDevice dbDevice, Device device)
        {
            if (dbDevice.GeotabId != device.Id.ToString())
            {
                throw new ArgumentException($"Cannot compare Device '{device.Id}' with DbDevice '{dbDevice.GeotabId}' because the IDs do not match.");
            }

            DateTime dbDeviceActiveFromUtc = dbDevice.ActiveFrom.GetValueOrDefault().ToUniversalTime();
            DateTime dbDeviceActiveToUtc   = dbDevice.ActiveTo.GetValueOrDefault().ToUniversalTime();

            if (dbDevice.ActiveFrom != device.ActiveFrom && dbDeviceActiveFromUtc != device.ActiveFrom)
            {
                return(true);
            }
            if (dbDevice.ActiveTo != device.ActiveTo && dbDeviceActiveToUtc != device.ActiveTo)
            {
                return(true);
            }

            string deviceDeviceType = device.DeviceType.ToString();

            if (dbDevice.DeviceType != deviceDeviceType || dbDevice.Name != device.Name || dbDevice.SerialNumber != device.SerialNumber)
            {
                return(true);
            }
            return(false);
        }
Ejemplo n.º 2
0
        protected override void OnStart()
        {
            DbStudent dbStudent = new DbStudent();
            Student   student   = dbStudent.GetStudent();

            // Comment out the 4 lines under to deactive the GoToLogin at
            if (student == null || student.accessToken == null)
            {
                Authenticater.Authorized = false;
            }

            NavPage = new NavigationPage(new MainPage());
            //NavPage = new NavigationPage(new LoginPage());
            MainPage = NavPage;

            //NavPage.BarBackgroundColor = Color.FromHex("ec7a08");
            //NavPage.BarTextColor = Color.White;

            if (student != null)
            {
                DeleteOutdatedData();
                UpdateAllFilters();
                DbDevice dbDevice = new DbDevice();
                if (dbDevice.GetDevice() != null && !dbDevice.GetDevice().tokenSent)
                {
                    DevicesController dc = new DevicesController();
                    dc.UpdateServersDb();
                }
            }
        }
        //LOG
        public int logDevice(string pDbNm, string pDevCd, string pSiteCd, string pDeviceId, string pDevTypeScd, string pDevIOScd, string pDevNm, string pIp, string pUsingFalg, string pSortNo, string pMemo, string pInputId)
        {
            int reCnt = 0;

            DbDevice db = null;

            try
            {
                string dbCon_IP   = WebConfigurationManager.ConnectionStrings["ConnectionStr_IP"].ConnectionString;
                string dbCon_DB   = WebConfigurationManager.ConnectionStrings["ConnectionStr_DB"].ConnectionString;
                string dbCon_USER = WebConfigurationManager.ConnectionStrings["ConnectionStr_USER"].ConnectionString;

                db    = new DbDevice(dbCon_IP, dbCon_DB, dbCon_USER, "0");
                reCnt = db.logDevice(pDbNm, pDevCd, pSiteCd, pDeviceId, pDevTypeScd, pDevIOScd, pDevNm, pIp, pUsingFalg, pSortNo, pMemo, pInputId);
            }
            catch (Exception ex)
            {
                logs.SaveLog("[error]  (page)::BizDevice.cs  (Function)::logDevice  (Detail)::pDbNm=[" + pDbNm + "], pDevCd=[" + pDevCd + "], pSiteCd=[" + pSiteCd + "]" +
                             ", pDeviceId=[" + pDeviceId + "], pDevTypeScd=[" + pDevTypeScd + "], pDevIOScd=[" + pDevIOScd + "], pDevNm=[" + pDevNm + "], " +
                             "pIp=[" + pIp + "], pUsingFalg=[" + pUsingFalg + "], pSortNo=[" + pSortNo + "], pMemo=[" + pMemo + "], pInputId=[" + pInputId + "]", "Error");
                logs.SaveLog("[error]  (page)::BizDevice.cs  (Function)::logDevice  (Detail)::" + "\r\n" + ex.ToString(), "Error");
            }
            finally
            {
                if (db != null)
                {
                    db.DisConnect();
                }
            }

            return(reCnt);
        }
        //SELECT
        public DataSet sDevice(string pDbNm, string pSiteCd)
        {
            DataSet ds = null;

            DbDevice db = null;

            try
            {
                string dbCon_IP   = WebConfigurationManager.ConnectionStrings["ConnectionStr_IP"].ConnectionString;
                string dbCon_DB   = WebConfigurationManager.ConnectionStrings["ConnectionStr_DB"].ConnectionString;
                string dbCon_USER = WebConfigurationManager.ConnectionStrings["ConnectionStr_USER"].ConnectionString;

                db = new DbDevice(dbCon_IP, dbCon_DB, dbCon_USER, "0");
                ds = db.sDevice(pDbNm, pSiteCd);
            }
            catch (Exception ex)
            {
                logs.SaveLog("[error]  (page)::BizDevice.cs  (Function)::sDevice  (Detail)::" + "\r\n" + ex.ToString(), "Error");
            }
            finally
            {
                if (db != null)
                {
                    db.DisConnect();
                }
            }

            return(ds);
        }
        //INSERT TEAM WITH PROCEDURE
        public string aDevicePro(string pDbNm, Hashtable param, out Hashtable outVal)
        {
            string reVal = "";

            DbDevice db = null;

            try
            {
                string dbCon_IP   = WebConfigurationManager.ConnectionStrings["ConnectionStr_IP"].ConnectionString;
                string dbCon_DB   = "Initial Catalog=PLUS-" + pDbNm + ";";
                string dbCon_USER = WebConfigurationManager.ConnectionStrings["ConnectionStr_USER"].ConnectionString;

                db    = new DbDevice(dbCon_IP, dbCon_DB, dbCon_USER, "1");
                reVal = db.aDevicePro(param, out outVal);
            }
            catch (Exception ex)
            {
                outVal = null;
                logs.SaveLog("[error]  (page)::BizDevice.cs  (Function)::aDevicePro  (Detail)::" + "\r\n" + ex.ToString(), "Error");
            }
            finally
            {
                if (db != null)
                {
                    db.DisConnect();
                }
            }

            return(reVal);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Converts the supplied list of <see cref="Device"/> objects into a list of <see cref="DbDevice"/> objects.
        /// </summary>
        /// <param name="devices">The list of <see cref="Device"/> objects to be converted.</param>
        /// <returns></returns>
        public static List <DbDevice> GetDbDevices(List <Device> devices)
        {
            var dbDevices = new List <DbDevice>();

            foreach (var device in devices)
            {
                DbDevice dbDevice = GetDbDevice(device);
                dbDevices.Add(dbDevice);
            }
            return(dbDevices);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Inserts or update the device with the given fields.
        /// </summary>
        /// <param name="gcmToken"></param>
        /// <param name="deviceId"></param>
        /// <param name="deviceType"></param>
        /// <returns></returns>
        public async Task InsertOrUpdateDevice(string gcmToken, string deviceId, string deviceType)
        {
            DbDevice  db        = new DbDevice();
            DbStudent dbStudent = new DbStudent();
            Student   student   = dbStudent.GetStudent();
            Device    device    = db.GetDevice();

            if (device == null)
            {
                device            = new Device();
                device.id         = deviceId;
                device.token      = gcmToken;
                device.tokenSent  = false;
                device.deviceType = deviceType;

                if (student != null)
                {
                    device.username = student.username;
                }
                db.InsertDevice(device);
                if (student != null)
                {
                    UpdateServersDb();
                }
                return;
            }

            if (device.token != gcmToken)
            {
                device.token     = gcmToken;
                device.tokenSent = false;
                if (student != null)
                {
                    device.username = student.username;
                }
                db.UpdateDevice(device);
                if (student != null)
                {
                    UpdateServersDb();
                }
                return;
            }

            if (!device.tokenSent && student != null)
            {
                if (device.username != student.username)
                {
                    device.username = student.username;
                    db.UpdateDevice(device);
                }
                UpdateServersDb();
            }
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Converts the supplied <see cref="Device"/> into a <see cref="DbDevice"/>.
        /// </summary>
        /// <param name="device">The <see cref="Device"/> to be converted.</param>
        /// <returns></returns>
        public static DbDevice GetDbDevice(Device device)
        {
            string  deviceLicensePlate = "";
            string  deviceLicenseState = "";
            string  deviceVIN          = "";
            dynamic convertedDevice    = Convert.ChangeType(device, device.GetType());

            try
            {
                deviceLicensePlate = convertedDevice.LicensePlate;
            }
            catch (RuntimeBinderException)
            {
                // Property does not exist for the subject Device type.
            }

            try
            {
                deviceLicenseState = convertedDevice.LicenseState;
            }
            catch (RuntimeBinderException)
            {
                // Property does not exist for the subject Device type.
            }

            try
            {
                deviceVIN = convertedDevice.VehicleIdentificationNumber;
            }
            catch (RuntimeBinderException)
            {
                // Property does not exist for the subject Device type.
            }

            if (deviceLicensePlate.Length == 0)
            {
                deviceLicensePlate = null;
            }
            if (deviceLicenseState.Length == 0)
            {
                deviceLicenseState = null;
            }
            if (deviceVIN.Length == 0)
            {
                deviceVIN = null;
            }

            DbDevice dbDevice = new DbDevice
            {
                ActiveFrom   = device.ActiveFrom,
                ActiveTo     = device.ActiveTo,
                DeviceType   = device.DeviceType.ToString(),
                GeotabId     = device.Id.ToString(),
                LicensePlate = deviceLicensePlate,
                LicenseState = deviceLicenseState,
                Name         = device.Name,
                ProductId    = device.ProductId,
                SerialNumber = device.SerialNumber,
                VIN          = deviceVIN
            };

            return(dbDevice);
        }
Ejemplo n.º 9
0
        public bool CreateDevice(CreateDeviceEvent device, DeviceStateEnum deviceState)
        {
            DbDeviceType deviceType = deviceTypesCache.First(x => string.Equals(x.Key, device.DeviceType, StringComparison.InvariantCultureIgnoreCase)).Value;

            var currentUTC    = DateTime.UtcNow;
            var devicePayload = new CreateDevicePayload
            {
                ActionUTC     = currentUTC,
                CellModemIMEI = device.CellModemIMEI,
                CellularFirmwarePartnumber = device.CellularFirmwarePartnumber,
                DataLinkType                = device.DataLinkType,
                DeviceState                 = deviceState.ToString(),
                DeregisteredUTC             = device.DeregisteredUTC,
                DevicePartNumber            = device.DevicePartNumber,
                DeviceSerialNumber          = device.DeviceSerialNumber,
                DeviceType                  = device.DeviceType,
                DeviceUID                   = device.DeviceUID.Value,
                FirmwarePartNumber          = device.FirmwarePartNumber,
                GatewayFirmwarePartNumber   = device.GatewayFirmwarePartNumber,
                MainboardSoftwareVersion    = device.MainboardSoftwareVersion,
                ModuleType                  = device.ModuleType,
                NetworkFirmwarePartnumber   = device.NetworkFirmwarePartnumber,
                RadioFirmwarePartNumber     = device.RadioFirmwarePartNumber,
                ReceivedUTC                 = device.ReceivedUTC,
                SatelliteFirmwarePartnumber = device.SatelliteFirmwarePartnumber
            };

            var devicePersonality = GetDevicePersonalities(devicePayload, null, deviceType);

            devicePayload = SetNullIfPropertyEmpty(devicePayload);
            //DeviceSerialNumber will be persisited as NULL in masterdata and send it as Empty to Kafka
            devicePayload.DeviceSerialNumber = string.IsNullOrEmpty(devicePayload.DeviceSerialNumber) ? string.Empty : devicePayload.DeviceSerialNumber;
            var deviceModel = new DbDevice
            {
                SerialNumber              = devicePayload.DeviceSerialNumber,
                DeregisteredUTC           = devicePayload.DeregisteredUTC,
                ModuleType                = devicePayload.ModuleType,
                fk_DeviceStatusID         = deviceState.GetHashCode(),
                MainboardSoftwareVersion  = devicePayload.MainboardSoftwareVersion,
                FirmwarePartNumber        = devicePayload.RadioFirmwarePartNumber == null ? devicePayload.FirmwarePartNumber : devicePayload.RadioFirmwarePartNumber,
                GatewayFirmwarePartNumber = devicePayload.GatewayFirmwarePartNumber,
                DataLinkType              = devicePayload.DataLinkType,
                InsertUTC                   = currentUTC,
                UpdateUTC                   = currentUTC,
                fk_DeviceTypeID             = deviceType.DeviceTypeID,
                CellModemIMEI               = devicePayload.CellModemIMEI,
                DevicePartNumber            = devicePayload.DevicePartNumber,
                CellularFirmwarePartnumber  = devicePayload.CellularFirmwarePartnumber,
                NetworkFirmwarePartnumber   = devicePayload.NetworkFirmwarePartnumber,
                SatelliteFirmwarePartnumber = devicePayload.SatelliteFirmwarePartnumber,
                DeviceUID                   = devicePayload.DeviceUID
            };

            var kafkaMessageList = new List <KafkaMessage>();

            kafkaTopicNames.ForEach(topic =>
            {
                var kafkaMessage = new KafkaMessage()
                {
                    Key     = device.DeviceUID.ToString(),
                    Message = new { CreateDeviceEvent = mapper.Map <CreateDevicePayload, CreateDeviceEvent>(devicePayload) },
                    Topic   = topic
                };
                kafkaMessageList.Add(kafkaMessage);
            });

            kafkaTopicNamesV2.ForEach(topic =>
            {
                var kafkaMessage = new KafkaMessage()
                {
                    Key     = device.DeviceUID.ToString(),
                    Message = ToDevicePayloadV2(devicePayload, devicePersonality),
                    Topic   = topic
                };
                kafkaMessageList.Add(kafkaMessage);
            });


            var actions = new List <Action>();

            actions.Add(() => transactions.Upsert(deviceModel));
            actions.Add(() => transactions.Upsert <DbDevicePersonality>(devicePersonality));
            actions.Add(() => transactions.Publish(kafkaMessageList));

            return(transactions.Execute(actions));
        }
Ejemplo n.º 10
0
        public bool UpdateDeviceProperties(UpdateDeviceProperties device, Guid deviceUid)
        {
            DbDeviceType deviceType    = deviceTypesCache.First(x => string.Equals(x.Key, device.DeviceType, StringComparison.InvariantCultureIgnoreCase)).Value;
            var          currentUTC    = DateTime.UtcNow;
            var          devicePayload = new UpdateDevicePayload
            {
                ActionUTC = currentUTC,
                CellularFirmwarePartnumber = device.CellularFirmwarePartnumber,
                DataLinkType                = device.DataLinkType,
                DeviceSerialNumber          = device.DeviceSerialNumber,
                DeviceType                  = device.DeviceType,
                DeviceUID                   = deviceUid,
                GatewayFirmwarePartNumber   = device.GatewayFirmwarePartNumber,
                MainboardSoftwareVersion    = device.MainboardSoftwareVersion,
                ModuleType                  = device.ModuleType,
                NetworkFirmwarePartnumber   = device.NetworkFirmwarePartnumber,
                RadioFirmwarePartNumber     = device.RadioFirmwarePartNumber,
                ReceivedUTC                 = device.ReceivedUTC,
                SatelliteFirmwarePartnumber = device.SatelliteFirmwarePartnumber,
                Description                 = device.Description
            };


            var existingDeviceProp    = GetExistingDeviceProperties(deviceUid);
            var existingPersonalities = GetExistingDevicePersonalities(devicePayload.DeviceUID);
            var devicePersonality     = GetDevicePersonalities(devicePayload, existingPersonalities, deviceType);

            devicePayload = AppendExistingDeviceProperties(devicePayload, existingDeviceProp);
            devicePayload.OwningCustomerUID = GetExistingOwningCustomerUid(deviceUid);
            var deviceState = (DeviceStateEnum)Enum.Parse(typeof(DeviceStateEnum), existingDeviceProp.DeviceState, true);

            devicePayload.ReceivedUTC = DateTime.UtcNow;

            bool equal = CheckExistingDevicePropertiesForUpdate(devicePayload, deviceState, devicePayload.OwningCustomerUID, existingDeviceProp);

            if (equal)
            {
                logger.LogInformation("No properties to update");
                return(false);
            }
            else
            {
                var kafkaMessageList = new List <KafkaMessage>();
                kafkaTopicNames.ForEach(topic =>
                {
                    var kafkaMessage = new KafkaMessage()
                    {
                        Key     = deviceUid.ToString(),
                        Message = new { UpdateDeviceEvent = mapper.Map <UpdateDevicePayload, UpdateDeviceEvent>(devicePayload) },
                        Topic   = topic
                    };
                    kafkaMessageList.Add(kafkaMessage);
                });

                kafkaTopicNamesV2.ForEach(topic =>
                {
                    var kafkaMessage = new KafkaMessage()
                    {
                        Key     = deviceUid.ToString(),
                        Message = ToDevicePayloadV2(devicePayload, devicePersonality),
                        Topic   = topic
                    };
                    kafkaMessageList.Add(kafkaMessage);
                });

                var actions     = new List <Action>();
                var deviceModel = new DbDevice
                {
                    CellModemIMEI = devicePayload.CellModemIMEI,
                    CellularFirmwarePartnumber = devicePayload.CellularFirmwarePartnumber,
                    DataLinkType                = devicePayload.DataLinkType,
                    DeregisteredUTC             = devicePayload.DeregisteredUTC,
                    DevicePartNumber            = devicePayload.DevicePartNumber,
                    SerialNumber                = devicePayload.DeviceSerialNumber,
                    fk_DeviceTypeID             = deviceType.DeviceTypeID,
                    DeviceUID                   = devicePayload.DeviceUID,
                    FirmwarePartNumber          = devicePayload.RadioFirmwarePartNumber == null ? devicePayload.FirmwarePartNumber : devicePayload.RadioFirmwarePartNumber,
                    GatewayFirmwarePartNumber   = devicePayload.GatewayFirmwarePartNumber,
                    MainboardSoftwareVersion    = devicePayload.MainboardSoftwareVersion,
                    ModuleType                  = devicePayload.ModuleType,
                    NetworkFirmwarePartnumber   = devicePayload.NetworkFirmwarePartnumber,
                    SatelliteFirmwarePartnumber = devicePayload.SatelliteFirmwarePartnumber,
                    UpdateUTC                   = currentUTC,
                    fk_DeviceStatusID           = deviceState.GetHashCode()
                };
                actions.Add(() => transactions.Upsert(deviceModel));
                actions.Add(() => transactions.Upsert <DbDevicePersonality>(devicePersonality));
                actions.Add(() => transactions.Publish(kafkaMessageList));
                return(transactions.Execute(actions));
            }
        }
Ejemplo n.º 11
0
        public bool UpdateDevice(UpdateDeviceEvent device, DeviceStateEnum deviceState)
        {
            var currentUTC    = DateTime.UtcNow;
            var devicePayload = new UpdateDevicePayload
            {
                ActionUTC     = currentUTC,
                CellModemIMEI = device.CellModemIMEI,
                CellularFirmwarePartnumber = device.CellularFirmwarePartnumber,
                DataLinkType                = device.DataLinkType,
                DeregisteredUTC             = device.DeregisteredUTC,
                DevicePartNumber            = device.DevicePartNumber,
                DeviceSerialNumber          = device.DeviceSerialNumber,
                DeviceState                 = deviceState == DeviceStateEnum.None?null: deviceState.ToString(),
                DeviceType                  = device.DeviceType,
                DeviceUID                   = device.DeviceUID.Value,
                FirmwarePartNumber          = device.FirmwarePartNumber,
                GatewayFirmwarePartNumber   = device.GatewayFirmwarePartNumber,
                MainboardSoftwareVersion    = device.MainboardSoftwareVersion,
                ModuleType                  = device.ModuleType,
                NetworkFirmwarePartnumber   = device.NetworkFirmwarePartnumber,
                OwningCustomerUID           = device.OwningCustomerUID,
                RadioFirmwarePartNumber     = device.RadioFirmwarePartNumber,
                ReceivedUTC                 = device.ReceivedUTC,
                SatelliteFirmwarePartnumber = device.SatelliteFirmwarePartnumber
            };

            var existingDeviceProp = GetExistingDeviceProperties(device.DeviceUID.Value);

            if (PLDeviceTypes.Contains(device.DeviceType.ToLower(), StringComparer.InvariantCultureIgnoreCase))
            {
                existingDeviceProp.RadioFirmwarePartNumber = existingDeviceProp.FirmwarePartNumber;
                existingDeviceProp.FirmwarePartNumber      = null;
            }

            var          existingPersonalities = GetExistingDevicePersonalities(device.DeviceUID.Value);
            DbDeviceType deviceType            = string.IsNullOrEmpty(devicePayload.DeviceType) ? deviceTypesCache.First(x => string.Equals(x.Key, existingDeviceProp.DeviceType, StringComparison.InvariantCultureIgnoreCase)).Value : deviceTypesCache.First(x => string.Equals(x.Key, devicePayload.DeviceType, StringComparison.InvariantCultureIgnoreCase)).Value;
            var          devicePersonality     = GetDevicePersonalities(devicePayload, existingPersonalities, deviceType);

            devicePayload = AppendExistingDeviceProperties(devicePayload, existingDeviceProp);
            Guid?currentOwningCustomerUID = GetExistingOwningCustomerUid(device.DeviceUID.Value);

            devicePayload.OwningCustomerUID = devicePayload.OwningCustomerUID ?? currentOwningCustomerUID;
            //DeviceSerialNumber will be persisited as NULL in masterdata and send it as Empty to Kafka
            devicePayload.DeviceSerialNumber = string.IsNullOrEmpty(devicePayload.DeviceSerialNumber) ? string.Empty : devicePayload.DeviceSerialNumber;
            bool equal = CheckExistingDevicePropertiesForUpdate(devicePayload, (DeviceStateEnum)Enum.Parse(typeof(DeviceStateEnum), devicePayload.DeviceState), currentOwningCustomerUID, existingDeviceProp);

            if (equal)
            {
                logger.LogInformation("No properties to update");
                return(false);
            }
            else
            {
                var kafkaMessageList = new List <KafkaMessage>();
                kafkaTopicNames.ForEach(topic =>
                {
                    var kafkaMessage = new KafkaMessage()
                    {
                        Key     = device.DeviceUID.ToString(),
                        Message = new { UpdateDeviceEvent = mapper.Map <UpdateDevicePayload, UpdateDeviceEvent>(devicePayload) },
                        Topic   = topic
                    };
                    kafkaMessageList.Add(kafkaMessage);
                });


                kafkaTopicNamesV2.ForEach(topic =>
                {
                    var kafkaMessage = new KafkaMessage()
                    {
                        Key     = device.DeviceUID.ToString(),
                        Message = ToDevicePayloadV2(devicePayload, devicePersonality),
                        Topic   = topic
                    };
                    kafkaMessageList.Add(kafkaMessage);
                });

                List <Action> actions = new List <Action>();

                var deviceModel = new DbDevice
                {
                    CellModemIMEI = devicePayload.CellModemIMEI,
                    CellularFirmwarePartnumber = devicePayload.CellularFirmwarePartnumber,
                    DataLinkType                = devicePayload.DataLinkType,
                    DeregisteredUTC             = devicePayload.DeregisteredUTC,
                    DevicePartNumber            = devicePayload.DevicePartNumber,
                    SerialNumber                = devicePayload.DeviceSerialNumber,
                    fk_DeviceStatusID           = deviceState.GetHashCode(),
                    fk_DeviceTypeID             = deviceType.DeviceTypeID,
                    DeviceUID                   = devicePayload.DeviceUID,
                    FirmwarePartNumber          = devicePayload.RadioFirmwarePartNumber == null ? devicePayload.FirmwarePartNumber : devicePayload.RadioFirmwarePartNumber,
                    GatewayFirmwarePartNumber   = devicePayload.GatewayFirmwarePartNumber,
                    MainboardSoftwareVersion    = devicePayload.MainboardSoftwareVersion,
                    ModuleType                  = devicePayload.ModuleType,
                    NetworkFirmwarePartnumber   = devicePayload.NetworkFirmwarePartnumber,
                    SatelliteFirmwarePartnumber = devicePayload.SatelliteFirmwarePartnumber,
                    UpdateUTC                   = currentUTC
                };
                var asset = GetOwningCustomerUID(device.DeviceUID.Value);

                if (device.OwningCustomerUID.HasValue && asset != null && (asset.OwningCustomerUID == Guid.Empty || !device.OwningCustomerUID.Equals(asset.OwningCustomerUID)))
                {
                    var updateAsset = new UpdateAssetEvent
                    {
                        AssetName         = asset.AssetName,
                        AssetType         = asset.AssetType,
                        EquipmentVIN      = asset.EquipmentVIN,
                        IconKey           = asset.IconKey,
                        Model             = asset.Model,
                        ModelYear         = asset.ModelYear,
                        LegacyAssetID     = asset.LegacyAssetID,
                        AssetUID          = asset.AssetUID,
                        OwningCustomerUID = device.OwningCustomerUID.Value,
                        ActionUTC         = DateTime.UtcNow,
                        ReceivedUTC       = DateTime.UtcNow
                    };

                    actions.Add(() => assetServices.UpdateAsset(updateAsset));
                }
                actions.Add(() => transactions.Upsert(deviceModel));
                actions.Add(() => transactions.Upsert <DbDevicePersonality>(devicePersonality));
                actions.Add(() => transactions.Publish(kafkaMessageList));
                return(transactions.Execute(actions));
            }
        }
Ejemplo n.º 12
0
        public async Task UpdateServersDb()
        {
            DbDevice  db          = new DbDevice();
            DbStudent dbStudent   = new DbStudent();
            Student   student     = dbStudent.GetStudent();
            Device    device      = db.GetDevice();
            string    accessToken = dbStudent.GetStudentAccessToken();

            if (student == null || accessToken == null || device == null || student.username != device.username)
            {
                Authenticater.Authorized = false;
                return;
            }
            if (device.tokenSent)
            {
                return;
            }
            System.Diagnostics.Debug.WriteLine("DevicesController - UpdateServersDb - bearer: " + accessToken);
            string serializedJson = "{\"Device\":[{\"id\":\"" + device.id + "\"," + "\"token\":\"" + device.token + "\"," +
                                    "\"deviceType\":\"" + device.deviceType + "\"}]}";

            //  {"Device":[{"id":"HT451WM08832","token":"longGCMToken","deviceType":"android"}]}
            System.Diagnostics.Debug.WriteLine("DevicesController - UpdateServersDb serializedJson: " + serializedJson);

            string encodedUsername = Hasher.Base64Encode(student.username);
            //"api/v1/students/{id}"
            string updateAdress = studentAdress + "/" + encodedUsername;

            System.Diagnostics.Debug.WriteLine("DevicesController - UpdateServersDb - adress: " + updateAdress);
            Uri url = new Uri(updateAdress);

            System.Diagnostics.Debug.WriteLine("DevicesController - UpdateServersDb - url.ToString: " + url.ToString());
            var client = new HttpClient();

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("bearer", accessToken);
            var content = new StringContent(serializedJson, Encoding.UTF8, "application/json");

            try
            {
                var response = await client.PostAsync(url, content);

                System.Diagnostics.Debug.WriteLine("UpdateServersDb response " + response.StatusCode.ToString());

                if (response.StatusCode == HttpStatusCode.OK)
                {
                    device.tokenSent = true;
                    db.UpdateDevice(device);
                    return;
                }

                if (response.StatusCode == HttpStatusCode.Unauthorized)
                {
                    System.Diagnostics.Debug.WriteLine("DevicesController - UpdateServersDb failed due to lack of Authorization");
                    Authenticater.Authorized = false;
                }
                // response.StatusCode is either unauthorized or another failed status.
                return;
            }
            catch (Exception e)
            {
                System.Diagnostics.Debug.WriteLine("StudentsController - PostStudentsStudyGroupToServer: await client.PostAsJsonAsync(url, jsonString) Failed");
                System.Diagnostics.Debug.WriteLine("StudentsController - PostStudentsStudyGroupToServer: Exception msg: " + e.Message);
                System.Diagnostics.Debug.WriteLine("StudentsController - PostStudentsStudyGroupToServer: Stack Trace: \n" + e.StackTrace);
                System.Diagnostics.Debug.WriteLine("StudentsController - PostStudentsStudyGroupToServer: End Of Stack Trace");
                return;
            }
        }
        /// <summary>
        /// This method is called after authentication is successfull.
        /// Implement functionality that is useful as initial server communication.
        /// </summary>
        /// <param name="account"></param>
        async void PerformAuth2TestRequests(Account account)
        {
            Authorized = true;
            App.SuccessfulLoginAction();

            try
            {
                /*
                 * System.Diagnostics.Debug.WriteLine("PerformAuth2TestRequests before looop");
                 *
                 *
                 * foreach (KeyValuePair<string, string> p in account.Properties)
                 * {
                 *  System.Diagnostics.Debug.WriteLine("Property: Key:" + p.Key + " Value:" + p.Value);
                 * }
                 * System.Diagnostics.Debug.WriteLine("PerformAuth2TestRequests before looop");
                 *
                 * System.Diagnostics.Debug.WriteLine("PerformAuth2TestRequests: Url:" + AuthProvider.ApiRequests);
                 * System.Diagnostics.Debug.WriteLine("Request Url:" + AuthProvider.ApiRequests);
                 */
                Uri requestLocalToken = new Uri(AuthProvider.ApiRequests + account.Properties["access_token"]);
                System.Diagnostics.Debug.WriteLine("Requesting local token");
                System.Diagnostics.Debug.WriteLine("Using access_token: " + account.Properties["access_token"]);
                OAuth2Request request1 = new OAuth2Request("GET", requestLocalToken, null, account);
                //OAuth2Request request1 = new OAuth2Request("GET", requestLocalToken, null, null);

                IResponse response1 = await request1.GetResponseAsync();

                System.Diagnostics.Debug.WriteLine("After Response");


                Dictionary <string, string> responseDict = JsonConvert.DeserializeObject <Dictionary <string, string> >(response1.GetResponseText());


                string localToken = "";
                string username   = "";

                if (response1.StatusCode == 200)
                {
                    System.Diagnostics.Debug.WriteLine("Response code from backend: 200");
                    localToken = responseDict["access_token"];
                    username   = responseDict["userName"];
                    System.Diagnostics.Debug.WriteLine("username: "******"localToken: " + localToken);

                    StudentsController sc        = new StudentsController();
                    DbStudent          dbStudent = new DbStudent();
                    if (dbStudent.CheckIfStudentExist(username))
                    {
                        System.Diagnostics.Debug.WriteLine("Student did exist");
                        Student student = dbStudent.GetStudent(username);
                        student.accessToken = localToken;
                        dbStudent.UpdateStudent(student);
                        DevicesController dc = new DevicesController();
                        dc.UpdateServersDb();
                    }
                    else
                    {
                        System.Diagnostics.Debug.WriteLine("Student did not exist");
                        dbStudent.DeleteAllStudents();
                        Student student = new Student();
                        student.username                    = username;
                        student.accessToken                 = localToken;
                        student.receiveNotifications        = true;
                        student.receiveJobNotifications     = true;
                        student.receiveProjectNotifications = true;
                        dbStudent.InsertStudent(student);
                        DevicesController dc       = new DevicesController();
                        DbDevice          dbDevice = new DbDevice();
                        dbDevice.FixStudentForeignKey(username);
                        dc.UpdateServersDb();
                    }
                }

                /*
                 * string studentEndpoint = "http://kompetansetorgetserver1.azurewebsites.net/api/v1/students";
                 * Uri testAuthorize = new Uri(studentEndpoint);
                 *
                 *
                 * //authorization: bearer b2Dvqzi9Ux_FAjbBYat6PE-LgNGKL_HDBWbnJ3Fb9cwfjaE8NQdqcvC8jwSB5QJUIVRog_gQQPjaRI0DT7ahu7TEpqP28URtPr1LjgaV - liCqgIuTdSHW_NqD3qh - 5shVh - h7TCin7XNHq8GSkGg5qtOlcHeFPSZ4xMwMbw5_1rBfKYJr3w0_D5R9jk0hJPEfJldCTYcawatz7wVfbmz0qKHAkrKxZyaqum6IHJWdczWz5K26RCfZWMwEmK1uLN5
                 *
                 * var client = new HttpClient();
                 * System.Diagnostics.Debug.WriteLine("PerformAuth2TestRequests before Setting AuthenticationHeaderValue");
                 * client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("bearer", localToken);
                 * System.Diagnostics.Debug.WriteLine("PerformAuth2TestRequests after Setting AuthenticationHeaderValue");
                 * System.Diagnostics.Debug.WriteLine(client.DefaultRequestHeaders.Authorization.Parameter);
                 *
                 *
                 * var response = await client.GetAsync(testAuthorize);
                 *
                 *
                 * System.Diagnostics.Debug.WriteLine("PerformAuth2TestRequests: StatusCode:" + response.StatusCode);
                 *                               // + " ResponseUri:" + response.ResponseUri);
                 * //System.Diagnostics.Debug.WriteLine("PerformAuth2TestRequests: Headers:");
                 *
                 *
                 * foreach (KeyValuePair<string, string> h in response.Headers)
                 * {
                 *  System.Diagnostics.Debug.WriteLine("Header: Key:" + h.Key + " Value:" + h.Value);
                 * }
                 * System.Diagnostics.Debug.WriteLine("Response(" + response.StatusCode);
                 * string jsonString = await response.Content.ReadAsStringAsync();
                 * System.Diagnostics.Debug.WriteLine(jsonString);
                 */
                // TODO Implement relevant GET, PUT or POST Requests
                // Notifies the app that the login was successful and that its safe to shift page.
                Authorized = true;
                App.SuccessfulLoginAction();
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine("Exception: PerformAuth2TestRequests: Message:" + ex.Message);
                foreach (KeyValuePair <string, string> p in account.Properties)
                {
                    System.Diagnostics.Debug.WriteLine("Key:" + p.Key + " Value:" + p.Value);
                }
            }
        }
Ejemplo n.º 14
0
        public async Task <IActionResult> PostNew([FromBody] NewDeviceDto newDeviceDto)
        {
            _logger.LogDebug("PostNewDevice");
            try
            {
                using (var context = new DynamoDBContext(_dynamoDb)) {
                    var now = DateTime.UtcNow;

                    // First create user if it doesn't exist
                    var user = await context.LoadAsync <DbUser>(newDeviceDto.User);

                    if (user == null)
                    {
                        user = new DbUser {
                            Id           = newDeviceDto.User,
                            RegisterDate = now,
                            Email        = "",
                            Name         = ""
                        };
                        await context.SaveAsync(user);
                    }

                    // Try to load device
                    var existingDevice = await context.LoadAsync <DbDevice>(newDeviceDto.Id);

                    if (existingDevice == null)
                    {
                        // Create new device
                        var newDevice = new DbDevice {
                            Id           = newDeviceDto.Id,
                            User         = newDeviceDto.User,
                            Description  = newDeviceDto.Description,
                            Enabled      = newDeviceDto.Enabled,
                            RegisterDate = now,
                            UpdateDate   = now,
                        };
                        await context.SaveAsync(newDevice);

                        return(Ok(new {
                            result = "ok",
                            message = "Created device.",
                            device = newDevice
                        }));
                    }
                    else
                    {
                        // Update device
                        existingDevice.Enabled     = newDeviceDto.Enabled;
                        existingDevice.UpdateDate  = now;
                        existingDevice.Description = newDeviceDto.Description;
                        await context.SaveAsync(existingDevice);

                        return(Ok(new {
                            result = "ok",
                            message = "Updated device.",
                            device = existingDevice
                        }));
                    }
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, ex.Message);
                throw;
            }
        }