Esempio n. 1
0
        private void PayForTournament(tournament tournament, TournamentRoundModel round, long walletId, long clientId, string language, string email, bool?usePass)
        {
            var payment = tournament.isdemo ? 0 : round.Round.base_deposit;

            if (!usePass.HasValue || !usePass.Value)
            {
                payment += round.Round.entry_fee;
            }
            else
            {
                var passes      = tournamentRepository.GetClientPasses(clientId);
                var passId      = passes.FirstOrDefault(x => x.IsRelevant && x.Pass.TournamentId == round.Round.tournament_id && (x.Pass.RoundNumber == round.Round.number)) ?? passes.FirstOrDefault(x => x.IsRelevant && x.Pass.TournamentId == round.Round.tournament_id && x.Pass.RoundNumber == null);
                var prizeResult = clientService.UsePrize(passId.Id, (short)PrizeType.Tournament);
                if (!prizeResult.IsSuccess)
                {
                    throw new OperationException(prizeResult.Error, prizeResult.Code);
                }
                tournamentRepository.UseTournamentClientPass(passId.Id);
                Logger.Debug("Client {1} use pass id {0} for tournament {2}, round {3}", passId.Id, clientId, tournament.name, round.Round.id);
            }

            var template = contentService.GetMessageTemplate(MessageTemplateType.TournamentRegistration, language);

            template.Result = template.Result ?? new MessageTemplate();

            var body = MessageTemplateHelper.ReplaceKeys(template.Result.Template, template.Result.Template, new[] { KeyTournament, KeyRound, KeyTime }, new[] { tournament.name, round.Round.number.ToString(), round.Round.date_start.ToString() });

            var bodyPlain = MessageTemplateHelper.ReplaceKeys(template.Result.Template, template.Result.Template, new[] { KeyTournament, KeyRound, KeyTime }, new[] { tournament.name, round.Round.number.ToString(), round.Round.date_start.ToString() });

            Task.Factory.StartNew(() => mailingService.SendMail(email, "Tournament registration", body, bodyPlain));
        }
Esempio n. 2
0
        public OperationResult AddPrize(long passId, long clientId, bool sendMail, DateTime?expiryDate, long?managerId)
        {
            return(InvokeOperations.InvokeOperation(() =>
            {
                Logger.Trace("Add prize (pass id {1}) for client {0}", clientId, passId);

                var newPassId = tournamentRepository.AddTournamentClientPass(clientId, passId, expiryDate);
                var resPrize = clientService.AddPrize(clientId, newPassId, (short)PrizeType.Tournament, expiryDate, managerId);
                if (!resPrize.IsSuccess)
                {
                    throw new OperationException(resPrize.Error, resPrize.Code);
                }



                if (sendMail)
                {
                    var client = clientService.GetClient(clientId);
                    if (!client.IsSuccess)
                    {
                        return;
                    }

                    var pass = tournamentRepository.GetTournamentPass(passId);
                    if (pass == null)
                    {
                        return;
                    }
                    var tournament = tournamentRepository.GetTournament(pass.tournament_id);
                    if (tournament == null)
                    {
                        return;
                    }

                    var template = contentService.GetMessageTemplate(type, LangHelper.GetLang(client.Result.Country));
                    template.Result = template.Result ?? new MessageTemplate {
                        Template = ""
                    };

                    var body = MessageTemplateHelper.ReplaceKeys(template.Result.Template, template.Result.Template,
                                                                 new[] { KeyName, KeyTournament },
                                                                 new[] { string.Format("{0} {1}", client.Result.FirstName, client.Result.LastName), tournament.name });

                    if (!string.IsNullOrEmpty(body))
                    {
                        Task.Factory.StartNew(() => mailingService.SendMail(client.Result.Email, "Tournament free pass", body, body));
                    }
                }
            }));
        }