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); } }
/// <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)); }