Ejemplo n.º 1
0
        public async Task CheckInClaim(int projectId, int claimId, int money)
        {
            var claim = (await ClaimsRepository.GetClaim(projectId, claimId)).RequestAccess(CurrentUserId); //TODO Specific right

            claim.EnsureCanChangeStatus(Claim.Status.CheckedIn);

            var validator = new ClaimCheckInValidator(claim);

            if (!validator.CanCheckInInPrinciple)
            {
                throw new ClaimWrongStatusException(claim);
            }

            FinanceOperationEmail financeEmail = null;

            if (money > 0)
            {
                var paymentType = claim.Project.GetCashPaymentType(CurrentUserId);

                if (paymentType == null)
                {
                    throw new JoinRpgInvalidUserException();
                }

                financeEmail = await AcceptFeeImpl(".", Now, 0, money, paymentType, claim);
            }
            else if (money < 0)
            {
                throw new InvalidOperationException();
            }

            if (!validator.CanCheckInNow)
            {
                throw new ClaimWrongStatusException(claim);
            }

            claim.ClaimStatus = Claim.Status.CheckedIn;
            claim.CheckInDate = Now;
            Debug.Assert(claim.Character != null, "claim.Character != null");
            MarkChanged(claim.Character);
            claim.Character.InGame = true;

            AddCommentImpl(claim, null, ".", true, CommentExtraAction.CheckedIn);

            await UnitOfWork.SaveChangesAsync();

            await
            EmailService.Email(
                await CreateClaimEmail <CheckedInEmal>(claim, ".", s => s.ClaimStatusChange,
                                                       CommentExtraAction.ApproveByMaster));

            if (financeEmail != null)
            {
                await EmailService.Email(financeEmail);
            }
        }
Ejemplo n.º 2
0
        public Task Email(FinanceOperationEmail model)
        {
            var message = "";

            if (model.FeeChange != 0)
            {
                message += $"\nИзменение взноса: {model.FeeChange}\n";
            }

            if (model.Money > 0)
            {
                message += $"\nОплата денег игроком: {model.Money}\n";
            }

            if (model.Money < 0)
            {
                message += $"\nВозврат денег игроку: {-model.Money}\n";
            }

            return(SendClaimEmail(model, "изменена", message));
        }