예제 #1
0
        public Transfer ConvertToTransferFromJson(TransferJson transferJson)
        {
            var transfer = new Transfer(new List <TeamTransfer>(), DateTime.UtcNow, FplDataProvider.Season);

            foreach (var teamTransferJson in transferJson.teamTransfers)
            {
                var teamTransfer = new TeamTransfer(teamTransferJson.transferredTo, new List <PlayersTransferred>());

                foreach (var playersTransferedJson in teamTransferJson.playersTransferred)
                {
                    var playerTransferred = new PlayersTransferred(playersTransferedJson.playerId, playersTransferedJson.transferredFrom);
                    teamTransfer.PlayersTransferred.Add(playerTransferred);
                }

                if (transfer.TeamTransfers.Select(x => x.TransferredTo).Contains(teamTransfer.TransferredTo))
                {
                    transfer.TeamTransfers.FirstOrDefault(x => x.TransferredTo == teamTransfer.TransferredTo).PlayersTransferred.AddRange(teamTransfer.PlayersTransferred);
                }
                else
                {
                    transfer.TeamTransfers.Add(teamTransfer);
                }
            }

            return(transfer);
        }
예제 #2
0
        public Transfer MakeTransfer([FromBody] TransferJson data)
        {
            // add the transfer
            var transfer = ConvertToTransferFromJson(data);

            _mongoTransferProvider.AddTransfer(transfer);

            // add the players being transferred in to the new team
            foreach (var teamTransfer in transfer.TeamTransfers)
            {
                if (teamTransfer.TransferredTo != -1)
                {
                    _mongoTransferProvider.AddPlayersToTeam(teamTransfer);
                }
            }

            // remove the players from the old teams
            var playersToRemove = new Dictionary <int, List <int> >();

            foreach (var teamTransfer in transfer.TeamTransfers)
            {
                foreach (var playerTransfer in teamTransfer.PlayersTransferred)
                {
                    if (playerTransfer.TransferredFrom != -1)
                    {
                        if (playersToRemove.ContainsKey(playerTransfer.TransferredFrom))
                        {
                            playersToRemove[playerTransfer.TransferredFrom].Add(playerTransfer.PlayerId);
                        }
                        else
                        {
                            playersToRemove.Add(playerTransfer.TransferredFrom, new List <int>()
                            {
                                playerTransfer.PlayerId
                            });
                        }
                    }
                }
            }

            foreach (var toRemove in playersToRemove)
            {
                _mongoTransferProvider.RemovePlayersFromTeam(toRemove.Key, toRemove.Value);
            }

            // return the transfer details
            return(transfer);
        }