コード例 #1
0
        public async Task <bool> UserDeviceUpdate([FromBody] ExUserDeviceInfo userDeviceData)
        {
            ClaimsIdentity identity = null;

            try
            {
                identity = HttpContext.User.Identity as ClaimsIdentity;
            }
            catch (Exception e)
            {
                Logging.Log.LogError("No Claims identity");
            }

            if (identity != null)
            {
                var claims = identity.Claims;

                if (!identity.HasClaim(c => c.Type == "UserID"))
                {
                    HttpContext.Response.StatusCode = Unauthorized().StatusCode;
                    return(false);
                }

                var userId = identity.HasClaim(c => c.Type == "UserID")
                    ? identity.FindFirst("UserID").Value
                    : "a"; //BENUTZER ID

                if (userDeviceData.UserId.ToString() != userId)
                {
                    HttpContext.Response.StatusCode = Unauthorized().StatusCode;
                    return(false);
                }
            }
            else
            {
                HttpContext.Response.StatusCode = Unauthorized().StatusCode;
                return(false);
            }

            Logging.Log.LogInfo($"UserDeviceUpdate {userDeviceData.Device.DeviceToken}");
            using (var db = new Db())
            {
                //Eventuell hängt das Gerät an einem anderen User Account => löschen!
                var userDevices = db.TblUserDevices.Where(d => d.Device.DeviceToken == userDeviceData.Device.DeviceToken && d.TblUserId != userDeviceData.UserId);
                if (userDevices != null)
                {
                    db.TblUserDevices.RemoveRange(userDevices);
                }

                //Daten aktualisieren
                bool isNew = false;

                if (userDeviceData.UserId < 0)
                {
                    return(false);
                }

                var user = await db.TblUsers.FirstOrDefaultAsync(u => u.Id == userDeviceData.UserId);

                if (user == null)
                {
                    return(false);
                }

                var data = await db.TblUserDevices.FirstOrDefaultAsync(d => d.Device.DeviceToken == userDeviceData.Device.DeviceToken);

                if (data == null)
                {
                    data = new TableUserDevice
                    {
                        TblUser = user
                    };
                    isNew = true;
                }

                if (isNew)
                {
                    db.TblUserDevices.Add(data);
                }

                if (data.Device == null)
                {
                    data.Device = new DbUserDeviceInfo();
                }

                data.Device.DeviceIdiom            = userDeviceData.Device.DeviceIdiom;
                data.Device.DeviceToken            = userDeviceData.Device.DeviceToken;
                data.Device.DeviceType             = userDeviceData.Device.DeviceType;
                data.Device.IsAppRunning           = userDeviceData.Device.IsAppRunning;
                data.Device.OperatingSystemVersion = userDeviceData.Device.OperatingSystemVersion;
                data.Device.Plattform             = userDeviceData.Device.Plattform;
                data.Device.LastDateTimeUtcOnline = DateTime.UtcNow;
                data.Device.IsAppRunning          = true;

                try
                {
                    db.SaveChanges();
                }
                catch (Exception e)
                {
                    Logging.Log.LogWarning($"UserDeviceUpdate Save: {e}");
                    return(false);
                }

                return(true);
            }
        }
コード例 #2
0
 /// <summary>
 ///     Ein Gerät eines User anlegen bzw. aktualisieren
 /// </summary>
 /// <param name="userDeviceData"></param>
 /// <returns></returns>
 public async Task <ResultData <bool?> > UserDeviceUpdate(ExUserDeviceInfo userDeviceData)
 {
     return(await _wap.Post <bool?>("UserDeviceUpdate", userDeviceData));
 }