Ejemplo n.º 1
0
        public bool EditRequest(string username, string commandText, bool isMod, out string songRequestText, out bool syntaxError)
        {
            if (string.IsNullOrWhiteSpace(commandText))
            {
                songRequestText = string.Empty;
                syntaxError     = true;
                return(false);
            }

            var commandTextTerms = commandText.Trim().Split(" ");

            SongRequestType   editRequestType;
            EditRequestResult result;

            // If the command text doesn't parse, we should attempt to edit a regular request
            if (!int.TryParse(commandTextTerms[0].Trim(), out var playlistIndex))
            {
                songRequestText = commandText;

                // edit regular request if it exists
                if (_getUsersCurrentRequestCountsQuery.GetUsersCurrentRequestCounts(username,
                                                                                    SongRequestType.Regular) == 1)
                {
                    editRequestType = SongRequestType.Regular;
                }
                // if true return, otherwise attempt to edit and refund a single vip
                else if (_getUsersCurrentRequestCountsQuery.GetUsersCurrentRequestCounts(username, SongRequestType.Vip) == 1)
                {
                    editRequestType = SongRequestType.Vip;
                }

                else if (_getUsersCurrentRequestCountsQuery.GetUsersCurrentRequestCounts(username,
                                                                                         SongRequestType.SuperVip) == 1)
                {
                    editRequestType = SongRequestType.SuperVip;
                }
                else
                {
                    songRequestText = string.Empty;
                    syntaxError     = true;
                    return(false);
                }

                var formattedRequest =
                    FormattedRequest.GetFormattedRequest(songRequestText);

                var songRequestId    = _getSingleSongRequestIdRepository.Get(username, editRequestType);
                var editRequestModel = new EditWebRequestRequestModel
                {
                    SongRequestId      = songRequestId,
                    Title              = formattedRequest?.SongName ?? songRequestText,
                    Artist             = formattedRequest?.SongArtist ?? string.Empty,
                    SelectedInstrument = formattedRequest?.InstrumentName ?? string.Empty,
                    IsVip              = editRequestType == SongRequestType.Vip,
                    IsSuperVip         = editRequestType == SongRequestType.SuperVip,
                    Username           = username,
                    IsMod              = isMod
                };

                result = EditWebRequest(editRequestModel);
            }
            else
            {
                songRequestText = string.Join(' ', commandTextTerms);

                // Edit request at position playlistIndex
                var songRequest = _getUsersRequestAtPlaylistIndexQuery.Get(username, playlistIndex,
                                                                           _currentRequest.isSuperVip || _currentRequest.isVip);

                if (songRequest == null)
                {
                    syntaxError     = true;
                    songRequestText = string.Empty;
                    return(false);
                }

                var formattedRequest =
                    FormattedRequest.GetFormattedRequest(commandText);
                var editRequestModel = new EditWebRequestRequestModel
                {
                    SongRequestId      = songRequest.SongRequestId,
                    Title              = formattedRequest?.SongName ?? songRequestText,
                    Artist             = formattedRequest?.SongArtist ?? string.Empty,
                    SelectedInstrument = formattedRequest?.InstrumentName ?? string.Empty,
                    IsVip              = songRequest.IsVip,
                    IsSuperVip         = songRequest.IsSuperVip,
                    Username           = username,
                    IsMod              = isMod
                };

                result = EditWebRequest(editRequestModel);
            }

            switch (result)
            {
            case EditRequestResult.NoRequestEntered:
            case EditRequestResult.NotYourRequest:
            case EditRequestResult.RequestAlreadyRemoved:
                syntaxError = true;
                break;

            default:
                syntaxError = false;
                break;
            }

            return(result == EditRequestResult.Success);
        }
 public int Get(string username, SongRequestType songRequestType)
 {
     return(_getSingleSongRequestIdRepository.Get(username, songRequestType));
 }