コード例 #1
0
        private async Task InsertNewDevice(DeviceNameModel device, DeviceType dbDeviceType, OsVersion dbOsVersion, AppVersion dbAppVersion, Language dbLanguage)
        {
            Device dvc = new Device();

            // Insert to table first then get ID if not exists
            dvc.DeviceTypeID     = dbDeviceType.DeviceTypeID;
            dvc.OsVersionID      = dbOsVersion.VersionID;
            dvc.AppVersionID     = dbAppVersion.VersionID;
            dvc.DeviceToken      = device.DeviceToken;
            dvc.IsActive         = true;
            dvc.DateLogin        = DateTime.Now;
            dvc.DateLastLogin    = DateTime.Now;
            dvc.PersonID         = device.PersonID;
            dvc.DeviceOsID       = device.DeviceOsID;
            dvc.DeviceLanguageID = dbLanguage.LanguageID;
            db.Device.Add(dvc);

            await db.SaveChangesAsync();
        }
コード例 #2
0
        public async Task <object> PostDevice(DeviceNameModel device)
        {
            dynamic cResponse = new ExpandoObject();

            try
            {
                if (!ModelState.IsValid)
                {
                    cResponse.Result      = "-1";
                    cResponse.Description = ModelState;
                    return(JsonConvert.DeserializeObject(JsonConvert.SerializeObject(cResponse)));
                }

                // get DeviceType and create new if not exist
                DeviceType dbDeviceType = await db.DeviceType.Where(x => x.Name == device.DeviceTypeName).SingleOrDefaultAsync();

                if (dbDeviceType == null)
                {
                    dbDeviceType      = new DeviceType();
                    dbDeviceType.Name = device.DeviceTypeName;

                    db.DeviceType.Add(dbDeviceType);
                    await db.SaveChangesAsync();
                }

                // get OsVersion and create new if not exist
                OsVersion dbOsVersion = await db.OsVersion.Where(x => x.Name == device.OsVersionName).SingleOrDefaultAsync();

                if (dbOsVersion == null)
                {
                    dbOsVersion      = new OsVersion();
                    dbOsVersion.Name = device.OsVersionName;

                    db.OsVersion.Add(dbOsVersion);
                    await db.SaveChangesAsync();
                }

                // get OsVersion and create new if not exist
                AppVersion dbAppVersion = await db.AppVersion.Where(x => x.Name == device.AppVersionName).SingleOrDefaultAsync();

                if (dbAppVersion == null)
                {
                    dbAppVersion      = new AppVersion();
                    dbAppVersion.Name = device.AppVersionName;

                    string[] dateTime = device.AppVersionDatePublish.Split('-');

                    int year  = Convert.ToInt16(dateTime[0]);
                    int month = Convert.ToInt16(dateTime[1]);
                    int day   = Convert.ToInt16(dateTime[2]);

                    DateTime dt = new DateTime(year, month, day);
                    dbAppVersion.DatePublish = dt;

                    db.AppVersion.Add(dbAppVersion);
                    await db.SaveChangesAsync();
                }

                Language dbLanguage = await db.Language.Where(x => x.Name == device.DeviceLanguageName).SingleOrDefaultAsync();

                if (dbLanguage == null)
                {
                    dbLanguage      = new Language();
                    dbLanguage.Name = device.DeviceLanguageName;

                    db.Language.Add(dbLanguage);
                }

                Device isFoundDevice = await db.Device.Where(x => x.DeviceToken == device.DeviceToken && x.IsActive == true && x.DeviceTypeID == dbDeviceType.DeviceTypeID).SingleOrDefaultAsync();

                if (isFoundDevice != null)
                {
                    bool isChanged = false;

                    if (isFoundDevice.OsVersionID != dbOsVersion.VersionID)
                    {
                        isChanged = true;
                    }

                    if (isFoundDevice.AppVersionID != dbAppVersion.VersionID)
                    {
                        isChanged = true;
                    }

                    if (isFoundDevice.DeviceOsID != device.DeviceOsID)
                    {
                        isChanged = true;
                    }

                    if (isFoundDevice.DeviceLanguageID != dbLanguage.LanguageID)
                    {
                        isChanged = true;
                    }

                    if (isFoundDevice.PersonID != device.PersonID)
                    {
                        isChanged = true;
                    }

                    if (isChanged)
                    {
                        isFoundDevice.IsActive = false;
                        await db.SaveChangesAsync();

                        await InsertNewDevice(device, dbDeviceType, dbOsVersion, dbAppVersion, dbLanguage);
                    }
                    else
                    {
                        isFoundDevice.DateLastLogin = DateTime.Now;
                        await db.SaveChangesAsync();
                    }

                    cResponse.Result      = "0";
                    cResponse.Description = "Device Updated";
                    return(JsonConvert.DeserializeObject(JsonConvert.SerializeObject(cResponse)));
                }
                else
                {
                    await InsertNewDevice(device, dbDeviceType, dbOsVersion, dbAppVersion, dbLanguage);

                    cResponse.Result      = "0";
                    cResponse.Description = "Device added to database";
                    return(JsonConvert.DeserializeObject(JsonConvert.SerializeObject(cResponse)));
                }
            }
            catch
            {
                cResponse.Result      = "-1";
                cResponse.Description = "Exception, your request could not be executed";
                return(JsonConvert.DeserializeObject(JsonConvert.SerializeObject(cResponse)));
            }
        }