public void PostDataTransferObjectsStream(string scope, string app, string graph, Stream stream) { try { MemoryStream ms = stream.ToMemoryStream(); DataTransferObjects dtos = Utility.DeserializeFromStream <DataTransferObjects>(ms); if (IsAsync()) { string statusURL = _dtoProvider.AsyncPostDataTransferObjects(scope, app, graph, dtos); WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.Accepted; WebOperationContext.Current.OutgoingResponse.Headers["location"] = statusURL; } else { Response response = _dtoProvider.PostDataTransferObjects(scope, app, graph, dtos); string responseXml = Utility.SerializeDataContract <Response>(response); HttpContext.Current.Response.ContentType = "application/xml"; HttpContext.Current.Response.Write(responseXml); } } catch (Exception ex) { ExceptionHander(ex); } }
/// /// Creates xml string from given dto. /// /// DTO /// XML public static string SerializeDto(DataTransferObjects dto) { XmlSerializer xmlSer = new XmlSerializer(dto.GetType()); StringWriter sWriter = new StringWriter(); // Serialize the dto to xml. xmlSer.Serialize(sWriter, dto); // Return the string of xml. return(sWriter.ToString()); }
/// /// Deserializes the xml into a specified data transfer object. /// /// string of xml /// type of dto /// DTO public static DataTransferObjects DeserializeXml(string xml, DataTransferObjects dto) { XmlSerializer xmlSer = new XmlSerializer(dto.GetType()); // Read the XML. StringReader sReader = new StringReader(xml); // Cast the deserialized xml to the type of dto. DataTransferObjects retDto = (DataTransferObjects)xmlSer.Deserialize(sReader); // Return the data transfer object. return(retDto); }
public void PostDataTransferObjects(string scope, string app, string graph, DataTransferObjects dataTransferObjects) { try { Response response = _dtoProvider.PostDataTransferObjects(scope, app, graph, dataTransferObjects); HttpContext.Current.Response.ContentType = "application/xml"; HttpContext.Current.Response.Write(Utility.SerializeDataContract <Response>(response)); } catch (Exception ex) { ExceptionHander(ex); } }
public void GetDataTransferObject(string scope, string app, string graph, string id) { try { DataTransferObjects dtos = _dtoProvider.GetDataTransferObject(scope, app, graph, id); HttpContext.Current.Response.ContentType = "application/xml"; HttpContext.Current.Response.Write(Utility.SerializeDataContract <DataTransferObjects>(dtos)); } catch (Exception ex) { ExceptionHander(ex); } }
public void GetPageDataTransferObjects(string scope, string app, string graph, DxiRequest request, int start, int limit) { try { DataTransferObjects dtos = _dtoProvider.GetPageDataTransferObjects(scope, app, graph, request, start, limit); HttpContext.Current.Response.ContentType = "application/xml"; HttpContext.Current.Response.Write(Utility.SerializeDataContract <DataTransferObjects>(dtos)); } catch (Exception ex) { ExceptionHander(ex); } }
public void GetDataTransferObjectsWithManifest(string scope, string app, string graph, DxoRequest dxoRequest, bool includeContent) { try { if (IsAsync()) { string statusURL = _dtoProvider.AsyncGetDataTransferObjects(scope, app, graph, dxoRequest, includeContent); WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.Accepted; WebOperationContext.Current.OutgoingResponse.Headers["location"] = statusURL; } else { DataTransferObjects dtos = _dtoProvider.GetDataTransferObjects(scope, app, graph, dxoRequest, includeContent); HttpContext.Current.Response.ContentType = "application/xml"; HttpContext.Current.Response.Write(Utility.SerializeDataContract <DataTransferObjects>(dtos)); } } catch (Exception ex) { ExceptionHander(ex); } }
public async Task<TeamResult> CreateTeamAsync(ClaimsPrincipal signedInUser, DataTransferObjects.Team team) { // Validate team if (team == null) { throw new ArgumentNullException(nameof(team)); } if (team.Roster == null) { throw new ArgumentNullException(nameof(team.Roster)); } if (team.Roster.Count() < 5) { throw new InvalidOperationException("Teams must have at least 5 members."); } if (team.Owner == null) { throw new ArgumentNullException(nameof(team.Owner)); } if (string.IsNullOrEmpty(team.Owner.Username)) { throw new InvalidOperationException("Team owner invalid username"); } if (string.IsNullOrEmpty(team.Name)) { throw new ArgumentNullException(nameof(team.Name)); } if (!Team.TeamNameRegex.IsMatch(team.Name)) { throw new InvalidOperationException($"Team name {team.Name} is invalid"); } // Make sure we have a default season var season = await _seasonManager.GetCurrentSeasonAsync(); if (season == null) { throw new InvalidProgramException("Current season not found"); } var entity = new Team { Name = team.Name, NormalizedName = team.Name.ToLower().Replace(' ', '-') }; // Create team roster var roster = new List<TeamInvite>(); foreach (var invitee in team.Roster) { // Validate invitee if (string.IsNullOrEmpty(invitee.Username) && string.IsNullOrEmpty(invitee.Tag)) { throw new InvalidOperationException("Team roster invalid"); } if (invitee.Username != team.Owner.Username) { Player player = null; if (!string.IsNullOrEmpty(invitee.Username)) { // If the player has a username, load the user player = _db.Players .Include(x => x.User) .SingleOrDefault(x => x.User.UserName == invitee.Username); if (player == null) { throw new InvalidProgramException($"Player entity for user {invitee.Username} not found."); } } else { player = await _db.Players.FirstOrDefaultAsync(x => x.Tag == invitee.Tag); } if (player == null) { throw new InvalidProgramException($"Unable to find player"); } var invite = new TeamInvite { Player = player, Team = entity }; roster.Add(invite); } } // Create team owner var ownerPlayer = _db.Players .Include(x => x.User) .SingleOrDefault(x => x.User.UserName == team.Owner.Username); if (ownerPlayer == null) { throw new InvalidProgramException($"Player entity for owner {team.Owner.Username} not found."); } if (ownerPlayer.User.Id != signedInUser.GetUserId()) { throw new InvalidOperationException($"Team owner must be currently signed in user."); } var teamOwner = new TeamOwner { Player = ownerPlayer, Team = entity }; // Begin transaction as this is where we begin save operations var transaction = await _db.Database.BeginTransactionAsync(); var result = await _userManager.AddClaimAsync(ownerPlayer.User, new Claim($"{AuthorizationDefaults.ClaimTypeTeamOwner}:{entity.NormalizedName}", ownerPlayer.User.UserName)); EnsureIdentitySucceeded(result); // Refresh the signin to add the owner cookie await _signInManager.RefreshSignInAsync(ownerPlayer.User); entity.Invitees = roster; entity.Owner = teamOwner; _db.Add(teamOwner); _db.Add(entity); foreach (var invitee in roster) { _db.Add(invitee); } try { await _db.SaveChangesAsync(); // Setup rank & image await _rankManager.CreateNewTeamRankingAsync(entity, season); await _imageManager.CreateDefaultImageForTeamAsync(entity); } catch (Exception e) { transaction.Rollback(); return TeamResult.Failed(e); } transaction.Commit(); return TeamResult.Success(entity); }
public async Task<Team> UpdateTeam(DataTransferObjects.Team team) { if (team == null) { throw new ArgumentNullException(nameof(team)); } var entity = await BuildTeamQuery(_db.Teams) .SingleOrDefaultAsync(x => x.NormalizedName == team.NormalizedName); return entity; }
public async Task<Player[]> SuggestAsync(DataTransferObjects.Player[] players) { var suggestions = await _db.Players .Include(x => x.User).ThenInclude(x => x.ProfileImage) .Include(x => x.User).ThenInclude(x => x.HeaderImage) .Where(x => x.LookingForTeam) .ToArrayAsync(); return suggestions; }
public async Task<Notification> ReadAsync(DataTransferObjects.Notification note, string username) { var user = await EnsureGetUserAsync(username); var entity = await _db.Notifications.SingleOrDefaultAsync(x => x.NotificationId == note.NotificationId); if (entity != null) { entity.Read = true; _db.Update(entity); await _db.SaveChangesAsync(); } return entity; }
//[Test] public void PostDataTransferObjects() { XDocument benchmark = null; Response response = null; DxoRequest dxoRequest = new DxoRequest(); DataTransferObjects postDtos = null; List <DataTransferObject> dtoList = null; DxiRequest dxiRequest = new DxiRequest(); dxiRequest.DataFilter = new DataFilter(); DataTransferIndices dtiList = null; dxiRequest.DataFilter.Expressions.Add( new Expression { PropertyName = "PipingNetworkSystem.NominalDiameter.valValue", Values = new Values { "80" }, RelationalOperator = RelationalOperator.EqualTo } ); dxiRequest.DataFilter.OrderExpressions.Add( new OrderExpression { PropertyName = "PipingNetworkSystem.IdentificationByTag.valIdentifier", SortOrder = SortOrder.Asc } ); dxiRequest.Manifest = _dxfrProvider.GetManifest(_settings["ProjectName"], _settings["ApplicationName"]); dtiList = _dxfrProvider.GetDataTransferIndicesWithFilter( _settings["ProjectName"], _settings["ApplicationName"], _settings["GraphName"], "MD5", dxiRequest); dxoRequest.Manifest = _dxfrProvider.GetManifest(_settings["ProjectName"], _settings["ApplicationName"]); dxoRequest.DataTransferIndices = dtiList; //dxoRequest.DataTransferIndices = // _dxfrProvider.GetDataTransferIndicesWithManifest( // _settings["ProjectName"], _settings["ApplicationName"], // _settings["GraphName"], "MD5", dxoRequest.Manifest); postDtos = _dxfrProvider.GetDataTransferObjects(_settings["ProjectName"], _settings["ApplicationName"], _settings["GraphName"], dxoRequest, false); dtoList = postDtos.DataTransferObjectList; dtoList[0].transferType = TransferType.Delete; dtoList[1].classObjects[1].templateObjects[0].roleObjects[2].oldValue = dtoList[1].classObjects[1].templateObjects[0].roleObjects[2].value; dtoList[1].classObjects[1].templateObjects[0].roleObjects[2].value = "200"; string path = String.Format( "{0}DxfrNewDto.xml", _settings["AppDataPath"] ); benchmark = XDocument.Load(path); DataTransferObject newDto = Utility.DeserializeDataContract <DataTransferObject>(benchmark.ToString()); dtoList.Add(newDto); response = _dxfrProvider.PostDataTransferObjects(_settings["ProjectName"], _settings["ApplicationName"], _settings["GraphName"], postDtos); path = String.Format( "{0}DxfrResponse.xml", _settings["AppDataPath"] ); XDocument xDocument = ToXml(response); xDocument.Save(path); Assert.AreNotEqual(null, xDocument); benchmark = XDocument.Load(path); String res = ToXml(response).ToString(); Response xmlResponse = Utility.DeserializeDataContract <Response>(benchmark.ToString()); Assert.AreEqual(response.Level.ToString(), xmlResponse.Level.ToString()); foreach (Status status in response.StatusList) { foreach (Status xmlStatus in xmlResponse.StatusList) { Assert.AreEqual(status.Messages.ToString(), xmlStatus.Messages.ToString()); Assert.AreEqual(status.Identifier, xmlStatus.Identifier); xmlResponse.StatusList.Remove(xmlStatus); break; } } //restore the table ResetDatabase(); }
//[Test] //public void GetDataTransferObjects() //{ // XDocument benchmark = null; // DataTransferIndices dtiList = null, dtiPage = new DataTransferIndices(); // DataTransferObjects dtos = null; // Manifest manifest = null; // int page = 25; // manifest = _dxfrProvider.GetManifest(_settings["ProjectName"], _settings["ApplicationName"]); // dtiList = // _dxfrProvider.GetDataTransferIndicesWithManifest( // _settings["ProjectName"], _settings["ApplicationName"], // _settings["GraphName"], "MD5", manifest); // dtiPage.DataTransferIndexList = dtiList.DataTransferIndexList.GetRange(0, page); // dtos = _dxfrProvider.GetDataTransferObjects(_settings["ProjectName"], _settings["ApplicationName"], // _settings["GraphName"], dtiPage); // string path = String.Format( // "{0}DxfrGetDataTransferObjects.xml", // _settings["AppDataPath"] // ); // XDocument xDocument = ToXml(dtos.DataTransferObjectList); // xDocument.Save(path); // Assert.AreNotEqual(null, xDocument); // benchmark = XDocument.Load(path); // String dtosString = ToXml(dtos.DataTransferObjectList).ToString(); // String benchmarkString = benchmark.ToString(); // Assert.AreEqual(dtosString, benchmarkString); //} //[Test] public void GetDataTransferObjectsWithDxoRequest() { XDocument benchmark = null; DataTransferIndices dtiList = null; DataTransferObjects dtos = null; DxiRequest dxiRequest = new DxiRequest(); dxiRequest.DataFilter = new DataFilter(); dxiRequest.DataFilter.Expressions.Add( new Expression { PropertyName = "PipingNetworkSystem.NominalDiameter.valValue", Values = new Values { "80" }, RelationalOperator = RelationalOperator.EqualTo } ); dxiRequest.DataFilter.OrderExpressions.Add( new OrderExpression { PropertyName = "PipingNetworkSystem.IdentificationByTag.valIdentifier", SortOrder = SortOrder.Asc } ); dxiRequest.Manifest = _dxfrProvider.GetManifest(_settings["ProjectName"], _settings["ApplicationName"]); dtiList = _dxfrProvider.GetDataTransferIndicesWithFilter( _settings["ProjectName"], _settings["ApplicationName"], _settings["GraphName"], "MD5", dxiRequest); DxoRequest dxoRequest = new DxoRequest(); dxoRequest.DataTransferIndices = new DataTransferIndices(); //int page = 25; dxoRequest.Manifest = _dxfrProvider.GetManifest(_settings["ProjectName"], _settings["ApplicationName"]); //dxoRequest.DataTransferIndices.DataTransferIndexList = dtiList.DataTransferIndexList.GetRange(0, page); dxoRequest.DataTransferIndices = dtiList; dtos = _dxfrProvider.GetDataTransferObjects(_settings["ProjectName"], _settings["ApplicationName"], _settings["GraphName"], dxoRequest, false); string path = String.Format( "{0}DxfrGetDataTransferObjectsWithDxoRequest.xml", _settings["AppDataPath"] ); XDocument xDocument = ToXml(dtos.DataTransferObjectList); xDocument.Save(path); Assert.AreNotEqual(null, xDocument); benchmark = XDocument.Load(path); String dtosString = ToXml(dtos.DataTransferObjectList).ToString(); String benchmarkString = benchmark.ToString(); Assert.AreEqual(dtosString, benchmarkString); }