public HttpResponseMessage GetByUserId(Guid userId) { HttpResponseMessage response; List <CPlaylistInfo> playlistsInfo = new List <CPlaylistInfo>(); try { List <CPlaylist> playlists = _playlistContext.GetByUserId(userId).ToList(); foreach (CPlaylist playlist in playlists) { CPlaylistInfo playlistInfo = new CPlaylistInfo(); playlistInfo = playlist.ToCPlaylistInfo(); playlistsInfo.Add(playlistInfo); } response = Request.CreateResponse(HttpStatusCode.OK, playlistsInfo); return(response); } catch (Exception e)// in case program crashes? { HttpContext.Current.Response.StatusCode = (Int32)HttpStatusCode.BadRequest; throw new ContextException(e.Message, e); } }
// todo: all requests, beside Register should use userId or userName? End client should keep his Id? // userName, userEmail are considered to be UNIQUE public HttpResponseMessage Unregister(Guid userId) { try { //create full path for the uploaded file CUser user = _userContext.GetById(userId); string userFolder = HttpContext.Current.Server.MapPath($@"~/App_Data/UserFiles/{user.Name}/"); DirectoryInfo dInfo = new DirectoryInfo(userFolder); //delete PHYSICAL folder & files on user delete if (dInfo != null) { Directory.Delete(userFolder, true); } // todo: delete all files on user delete - for now they are CASCADE DELETE on USER DELETE // delete all user playlists List <CPlaylist> userPlaylists = _playlistContext.GetByUserId(userId).ToList(); foreach (CPlaylist playlist in userPlaylists) { if (_playlistContext.DeleteById(playlist.Guid) <= 0) { Request.CreateResponse(HttpStatusCode.BadRequest, $"Couldn't delete playlist:{playlist.Name} for user:{userId}"); } } // delete user from DB if (_userContext.Delete(userId) <= 0) { Request.CreateResponse(HttpStatusCode.BadRequest, $"Couldn't delete user:{userId}"); } return(Request.CreateResponse(HttpStatusCode.OK, $"User:{userId} successfully deleted from Media Server!")); } catch (ContextException e) { HttpContext.Current.Response.StatusCode = (Int32)HttpStatusCode.BadRequest; throw new ContextException(e.Message, e); } }