Пример #1
0
        private async Task <IActionResult> PostMessageImpl(int id)
        {
            var vender
                = await DbContext.Venders
                  .Include(c => c.VenderMessages)
                  .ThenInclude(c => c.VetMember)
                  .FirstOrDefaultAsync(c => c.Id == id);



            if (vender == null)
            {
                return(NotFound());
            }

            if (!string.IsNullOrEmpty(PostMessage))
            {
                var userContext = CoreService.GetUserContext();
                var vm          = new VenderMessage
                {
                    Message     = PostMessage,
                    VenderId    = vender.Id,
                    VetMemberId = userContext.CurrentUser.Id
                };

                DbContext.VenderMessages.Add(vm);
                await DbContext.SaveChangesAsync();
                await SendMessages(vender, userContext.CurrentUser, PostMessage);

                PostMessage = null;
            }


            return(RedirectToPage("Details", new { id = id, isBuyNotification = IsBuyNotification }));
        }
Пример #2
0
        private async Task <IActionResult> PostMessageImpl(int id)
        {
            var donation = await DbContext.Donations.FindAsync(id);

            if (donation == null)
            {
                return(NotFound());
            }

            if (!string.IsNullOrEmpty(PostMessage))
            {
                var userContext = CoreService.GetUserContext();
                var dm          = new DonationMessage
                {
                    Message     = PostMessage,
                    DonationId  = donation.Id,
                    VetMemberId = userContext.CurrentUser.Id
                };

                DbContext.DonationMessages.Add(dm);
                await DbContext.SaveChangesAsync();


                //await SendMessages(trade, userContext.CurrentUser, postMessage);


                PostMessage = null;
            }
            return(RedirectToPage("Details", new { id = id }));
        }
Пример #3
0
        public async Task <IActionResult> OnPostAsync()
        {
            if (Vender.HasDeliveryMessage && string.IsNullOrWhiteSpace(Vender.DeliveryMessage))
            {
                ModelState.AddModelError("Vender.DeliveryMessage", "DMメッセージ内容を入力してください");
            }


            if (!ModelState.IsValid)
            {
                return(Page());
            }


            var userContext = CoreService.GetUserContext();

            Vender.VetMemberId = userContext.CurrentUser.Id;

            DbContext.Venders.Add(Vender);
            await DbContext.SaveChangesAsync();

            await Notification(userContext);

            return(RedirectToPage("./Index"));
        }
Пример #4
0
        public async Task <IActionResult> OnPostAsync()
        {
            if (!ModelState.IsValid)
            {
                return(Page());
            }

            //DbContext.Attach(ReactionMap).State = EntityState.Modified;

            var entity = DbContext.ReactionMaps.Find(ReactionMap.Id);

            await TryUpdateModelAsync(entity, nameof(ReactionMap));


            try
            {
                await DbContext.SaveChangesAsync();

                SiteContext.ClearReactionMap();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!ReactionMapExists(ReactionMap.Id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(RedirectToPage("./Index"));
        }
Пример #5
0
        public async Task <IActionResult> OnPostAsync()
        {
            if (!ModelState.IsValid)
            {
                return(Page());
            }

            var entity      = DbContext.Trades.Find(Trade.Id);
            var userContext = CoreService.GetUserContext();

            if (entity.VetMemberId != userContext.CurrentUser.Id)
            {
                return(NotFound());
            }

            await TryUpdateModelAsync(entity, nameof(Trade));

            try
            {
                await DbContext.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!TradeExists(entity.Id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(RedirectToPage("./Index"));
        }
Пример #6
0
        public async Task <IActionResult> OnPostAsync()
        {
            if (!ModelState.IsValid)
            {
                return(Page());
            }

            var userContext = CoreService.GetUserContext();

            Trade.VetMemberId  = userContext.CurrentUser.Id;
            Trade.OrderRefDate = DateTimeOffset.Now;

            DbContext.Trades.Add(Trade);
            await DbContext.SaveChangesAsync();



            await DiscordService.SendMessage(DiscordService.Channel.TradeEntryNotification, $@"{Trade.Direction}
タイトル:{Trade.Title}
依頼主:{userContext.CurrentUser.Name}
料金:{Trade.Reward} {Trade.RewardComment}
納期:{Trade.DeliveryDate}

{Trade.Content}

https://vetcoin.azurewebsites.net/Trades/Details?id={Trade.Id}");

            return(RedirectToPage("./Index", new { direction = Trade.Direction }));
        }
Пример #7
0
        public async Task <IActionResult> OnPostAsync()
        {
            if (!ModelState.IsValid)
            {
                return(Page());
            }

            //DbContext.Attach(Contract).State = EntityState.Modified;

            var entity = DbContext.Contracts.Find(Contract.Id);

            //  await TryUpdateModelAsync(entity, nameof(Contract));
            entity.ContractStatus = ContractStatus.Canceled;


            try
            {
                await DbContext.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!ContractExists(Contract.Id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(RedirectToPage("./Index", new { contractId = Contract.Id }));
        }
Пример #8
0
        public async Task <IActionResult> OnPostAsync()
        {
            if (!ModelState.IsValid)
            {
                return(Page());
            }

            //DbContext.Attach(VetMember).State = EntityState.Modified;

            var userContext = CoreService.GetUserContext();
            var entity      = userContext.CurrentUser;

            await TryUpdateModelAsync(entity, nameof(VetMember));


            try
            {
                await DbContext.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!VetMemberExists(VetMember.Id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(RedirectToPage("./Index"));
        }
Пример #9
0
        public async Task <IActionResult> OnPostAsync()
        {
            if (Vender.HasDeliveryMessage && string.IsNullOrWhiteSpace(Vender.DeliveryMessage))
            {
                ModelState.AddModelError("Vender.DeliveryMessage", "DMメッセージ内容を入力してください");
            }

            if (!ModelState.IsValid)
            {
                return(Page());
            }


            var entity = DbContext.Venders.Find(Vender.Id);

            await TryUpdateModelAsync(entity, nameof(Vender));

            try
            {
                await DbContext.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!VenderExists(Vender.Id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(RedirectToPage("./Details", new { id = Vender.Id }));
        }
Пример #10
0
        public async Task <IActionResult> Subscribe(int id)
        {
            var userContext  = CoreService.GetUserContext();
            var subscription = DbContext.Subscriptions
                               .Include(c => c.VetMember)
                               .FirstOrDefault(c => c.Id == id);

            DbContext.SubscriptionMembers.Add(new SubscriptionMember
            {
                SubscriptionId = id,
                VetMemberId    = userContext.CurrentUser.Id
            });
            await DbContext.SaveChangesAsync();

            await CoreService.SendDirectMessage(new[] { subscription.VetMember }, $@"{userContext.CurrentUser.Name}さんが{subscription.Title}に登録されました");

            return(await OnGetAsync(id));
        }
Пример #11
0
        public async Task <IActionResult> OnPostAsync()
        {
            if (!ModelState.IsValid)
            {
                return(Page());
            }

            //DbContext.Attach(Contract).State = EntityState.Modified;

            var entity = DbContext.Contracts
                         .Include(c => c.EscrowTransaction)
                         .First(c => c.Id == Contract.Id);
            var trade = DbContext.Trades.Find(entity.TradeId);

            //await TryUpdateModelAsync(entity, nameof(Contract));

            //TODO:契約を結ぶためのコード
            entity.ContractStatus = ContractStatus.Complete;

            var escrowReciveUser = trade.Direction == Direction.Sell ?
                                   DbContext.VetMembers.Find(trade.VetMemberId) :
                                   DbContext.VetMembers.Find(entity.VetMemberId);
            var escrowSendUser = trade.Direction == Direction.Sell ?
                                 DbContext.VetMembers.Find(trade.VetMemberId) :
                                 DbContext.VetMembers.Find(entity.VetMemberId);

            entity.EscrowTransaction.RecivedVetMemberId = escrowReciveUser.Id;


            if (trade.IsContinued)
            {
                trade.OrderRefDate = DateTimeOffset.Now;
            }

            try
            {
                await DbContext.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!ContractExists(Contract.Id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            await SendMessages(entity, escrowSendUser, escrowReciveUser);



            return(RedirectToPage("./Index", new { contractId = Contract.Id }));
        }
Пример #12
0
        public async Task <IActionResult> AddImage(int id)
        {
            if (ImageFile != null)
            {
                using (var stream = new MemoryStream())
                {
                    await ImageFile.CopyToAsync(stream);


                    DbContext.TradeImages.Add(new TradeImage
                    {
                        ImageContent = stream.ToArray(),
                        TradeId      = id
                    });
                }
            }

            await DbContext.SaveChangesAsync();

            return(await OnGet(id));
        }
Пример #13
0
        public async Task <IActionResult> OnPostAsync()
        {
            if (!ModelState.IsValid)
            {
                return(Page());
            }

            DbContext.ExteralApplications.Add(ExteralApplication);
            await DbContext.SaveChangesAsync();

            return(RedirectToPage("./Index"));
        }
Пример #14
0
        public async Task <IActionResult> OnPostAsync()
        {
            if (!ModelState.IsValid)
            {
                return(Page());
            }

            DbContext.ReactionMaps.Add(ReactionMap);
            await DbContext.SaveChangesAsync();

            SiteContext.ClearReactionMap();

            return(RedirectToPage("./Index"));
        }
Пример #15
0
        public async Task <IActionResult> OnPostAsync(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            ReactionMap = await DbContext.ReactionMaps.FindAsync(id);

            if (ReactionMap != null)
            {
                DbContext.ReactionMaps.Remove(ReactionMap);
                await DbContext.SaveChangesAsync();
            }

            return(RedirectToPage("./Index"));
        }
Пример #16
0
        public async Task <IActionResult> OnPostAsync(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            Trade = await DbContext.Trades.FindAsync(id);

            if (Trade != null)
            {
                Trade.TradeStatus = TradeStatus.Cancel;
                await DbContext.SaveChangesAsync();
            }

            return(RedirectToPage("./Index"));
        }
Пример #17
0
        public async Task <IActionResult> OnPostAsync()
        {
            if (!ModelState.IsValid)
            {
                return(Page());
            }

            //DbContext.Attach(Contract).State = EntityState.Modified;

            var entity = DbContext.Contracts.Find(Contract.Id);

            //var trade = DbContext.Trades.Find(entity.TradeId);

            entity.ContractStatus = ContractStatus.Canceled;

            //var escrowUser = DbContext.VetMembers.First(c => c.MemberType == MemberType.Escrow);
            //var escrowTargetUser = trade.Direction == Direction.Buy ?
            //                          DbContext.VetMembers.Find(trade.VetMemberId) :
            //                          DbContext.VetMembers.Find(entity.VetMemberId);

            //entity.EscrowTransaction = new CoinTransaction
            //{
            //    RecivedVetMemberId = escrowUser.Id,
            //    Amount = entity.Reword,
            //    SendeVetMemberId = escrowTargetUser.Id,
            //    Text = $"{trade.Title } ‘ã‹à {entity.Reword}VEC",
            //};

            try
            {
                await DbContext.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!ContractExists(Contract.Id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(RedirectToPage("./Index", new { contractId = Contract.Id }));
        }
Пример #18
0
        public async Task <IActionResult> OnPostAsync(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            Subscription = await DbContext.Subscriptions.FindAsync(id);

            if (Subscription != null)
            {
                Subscription.SubscriptionStatus = SubscriptionStatus.Cancel;
                await DbContext.SaveChangesAsync();
            }

            return(RedirectToPage("./Index"));
        }
Пример #19
0
        public async Task <IActionResult> OnPostAsync(Guid?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            ExteralApplication = await DbContext.ExteralApplications.FindAsync(id);

            if (ExteralApplication != null)
            {
                DbContext.ExteralApplications.Remove(ExteralApplication);
                await DbContext.SaveChangesAsync();
            }

            return(RedirectToPage("./Index"));
        }
Пример #20
0
        public async Task <IActionResult> OnPostAsync()
        {
            if (!ModelState.IsValid)
            {
                return(Page());
            }

            var userContext = CoreService.GetUserContext();

            Donation.VetMemberId = userContext.CurrentUser.Id;

            DbContext.Donations.Add(Donation);
            await DbContext.SaveChangesAsync();

            await Notification(userContext);

            return(RedirectToPage("./Index"));
        }
Пример #21
0
        public async Task <IActionResult> OnPostAsync(int tradeId)
        {
            if (!ModelState.IsValid)
            {
                return(Page());
            }

            var userContext = CoreService.GetUserContext();

            Contract.VetMemberId = userContext.CurrentUser.Id;
            Contract.TradeId     = tradeId;

            DbContext.Contracts.Add(Contract);
            await DbContext.SaveChangesAsync();

            await SendMessages(Contract, userContext.CurrentUser);

            return(RedirectToPage("./Index", new { contractId = Contract.Id }));
        }
Пример #22
0
        public async Task <IActionResult> OnPostAsync()
        {
            if (!ModelState.IsValid)
            {
                return(Page());
            }

            //DbContext.Attach(Contract).State = EntityState.Modified;

            var entity = DbContext.Contracts
                         .Include(c => c.EscrowTransaction)
                         .First(c => c.Id == Contract.Id);
            var trade = DbContext.Trades.Find(entity.TradeId);

            //await TryUpdateModelAsync(entity, nameof(Contract));

            //TODO:契約をキャンセルする
            entity.ContractStatus = ContractStatus.Canceled;
            DbContext.CoinTransactions.Remove(entity.EscrowTransaction);
            entity.EscrowTransaction = null;

            try
            {
                await DbContext.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!ContractExists(Contract.Id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(RedirectToPage("./Index", new { contractId = Contract.Id }));
        }
Пример #23
0
        public async Task <IActionResult> OnPostAsync()
        {
            if (Subscription.Fee <= 0)
            {
                ModelState.AddModelError("Fee", "1以上の金額を指定してください");
            }


            if (!ModelState.IsValid)
            {
                return(Page());
            }

            var userContext = CoreService.GetUserContext();

            Subscription.VetMemberId = userContext.CurrentUser.Id;

            DbContext.Subscriptions.Add(Subscription);
            await DbContext.SaveChangesAsync();

            return(RedirectToPage("./Index"));
        }
Пример #24
0
        public async Task <IActionResult> OnPostAsync(string mode)
        {
            var entity = DbContext.Venders.Find(Vender.Id);

            switch (mode)
            {
            case "Open":
                entity.IsClosed = false;
                break;

            case "Close":
                entity.IsClosed = true;
                break;

            default:
                break;
            }



            try
            {
                await DbContext.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!VenderExists(Vender.Id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(RedirectToPage("./Details", new { id = Vender.Id }));
        }
Пример #25
0
        public async Task <IActionResult> OnPostAsync()
        {
            if (!ModelState.IsValid)
            {
                return(await OnGetAsync(Donation.Id));
            }


            var entity = DbContext.Donations.Find(Donation.Id);

            var log = new DonationLog
            {
                Title      = entity.Title,
                Content    = entity.Content,
                DonationId = Donation.Id
            };

            DbContext.DonationLogs.Add(log);
            await TryUpdateModelAsync(entity, nameof(Donation));

            try
            {
                await DbContext.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!DonationExists(Donation.Id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(RedirectToPage("./Details", new { id = Donation.Id }));
        }
Пример #26
0
        public async Task <IActionResult> OnPostAsync()
        {
            if (!ModelState.IsValid)
            {
                return(Page());
            }

            var userContext = CoreService.GetUserContext();

            Trade.VetMemberId  = userContext.CurrentUser.Id;
            Trade.OrderRefDate = DateTimeOffset.Now;

            DbContext.Trades.Add(Trade);
            await DbContext.SaveChangesAsync();


            if (!IsSkipNotification)
            {
                await Notification(userContext);
            }

            return(RedirectToPage("./Index", new { direction = Trade.Direction }));
        }
Пример #27
0
        public async Task <IActionResult> OnPostAsync()
        {
            if (!ModelState.IsValid)
            {
                return(Page());
            }

            //DbContext.Attach(Contract).State = EntityState.Modified;

            var entity = DbContext.Contracts
                         .Include(c => c.VetMember)
                         .FirstOrDefault(c => c.Id == Contract.Id);
            var trade = DbContext.Trades
                        .Include(c => c.VetMember)
                        .FirstOrDefault(c => c.Id == entity.TradeId);
            //await TryUpdateModelAsync(entity, nameof(Contract));

            //TODO:契約を結ぶためのコード


            var escrowUser     = DbContext.VetMembers.First(c => c.MemberType == MemberType.Escrow);
            var escrowSendUser = trade.Direction == Direction.Buy ?
                                 DbContext.VetMembers.Find(trade.VetMemberId) :
                                 DbContext.VetMembers.Find(entity.VetMemberId);

            var restAmmount = CoreService.CalcAmount(escrowSendUser);

            if (restAmmount < entity.Reword)
            {
                IsInsufficientFunds = true;

                return(await OnGetAsync(Contract.Id));
            }



            entity.ContractStatus    = ContractStatus.Working;
            entity.EscrowTransaction = new CoinTransaction
            {
                RecivedVetMemberId = escrowUser.Id,
                Amount             = entity.Reword,
                SendeVetMemberId   = escrowSendUser.Id,
                Text            = $"{trade.Title } 代金 {entity.Reword}VEC",
                TransactionType = CoinTransactionType.Contract
            };

            try
            {
                await DbContext.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!ContractExists(Contract.Id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            await SendMessages(entity, trade.VetMember, entity.VetMember);

            return(RedirectToPage("./Index", new { contractId = Contract.Id }));
        }