Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        ///
        /// 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());
        }
Exemplo n.º 3
0
        ///
        /// 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);
        }
Exemplo n.º 4
0
        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);
            }
        }
Exemplo n.º 5
0
        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);
            }
        }
Exemplo n.º 6
0
        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);
            }
        }
Exemplo n.º 7
0
        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);
            }
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 9
0
        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;
        }
Exemplo n.º 10
0
        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;
        }
Exemplo n.º 12
0
        //[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();
        }
Exemplo n.º 13
0
        //[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);
        }