コード例 #1
0
        /// <summary>
        /// Used to accept a adoption request
        /// </summary>
        /// <param name="id">Adoption Request ID</param>
        /// <returns>Index View</returns>
        public async Task <IActionResult> Accept(int?id)
        {
            var user = await _userManager.GetUserAsync(User);

            var roles = await _userManager.GetRolesAsync(user);

            AdoptionLogs newLog = new AdoptionLogs()
            {
                Date              = DateTime.Now,
                UserId            = user.Id,
                AdoptionStateId   = 3, // Accepted
                AdoptionRequestId = id
            };

            _context.AdoptionLogs.Add(newLog);
            _context.SaveChanges();

            IQueryable <AdoptionRequests> adoptions = _context.AdoptionRequests.Include(a => a.User)
                                                      .Include(a => a.Animal)
                                                      .Include(a => a.AdoptionLogs)
                                                      .ThenInclude(p => p.AdoptionState);


            if (roles.Contains(Role.User.ToString()) || roles.Contains(Role.Veterinary.ToString()))
            {
                adoptions = adoptions.Where(a => a.UserId == user.Id);
            }

            var request = await _context.AdoptionRequests.FindAsync(id);

            var animal = await _context.Animals.FindAsync(request.AnimalId);

            animal.UserId = request.UserId;
            _context.SaveChanges();

            _notificationService.Register(_context, new UserNotification()
            {
                UserId  = request.UserId,
                Message = "<img class='card - img - top img - fluid' id='pet - image' style='margin:auto; height: 25vw; object-fit: contain; ' src='" + animal.Image + "' alt='Card image cap'>Caro utilizador (a), temos o prazer de informar que o seu pedido de adoção referente ao animal " +
                          "<a href='../../../Animals/Details/" + animal.AnimalId + "'>" + animal.Name + "</a> foi aceite.",
                Title            = "Resposta pedido de adoção",
                NotificationDate = DateTime.Now,
            }, _emailSender);


            var otherAdoptions = _context.AdoptionRequests.Include(a => a.User)
                                 .Include(a => a.Animal)
                                 .Include(a => a.AdoptionLogs)
                                 .ThenInclude(p => p.AdoptionState)
                                 .Where(r => r.AnimalId == request.AnimalId).Where(r => r.AdoptionLogs.OrderByDescending(l => l.Date).FirstOrDefault().AdoptionStateId == 1);

            foreach (AdoptionRequests adp in otherAdoptions)
            {
                await Decline(adp.AdoptionRequestId);
            }

            return(View("Index", adoptions));
        }
コード例 #2
0
        public async Task <IActionResult> NewRequest(int?id, [Bind("AnimalId,AdoptionType,StartDate,EndDate,Details")] AdoptionRequests request)
        {
            AdoptionRequests newRequest = new AdoptionRequests()
            {
                AnimalId     = int.Parse(id.ToString()),
                UserId       = (await _userManager.GetUserAsync(User)).Id,
                AdoptionType = request.AdoptionType,
                ProposalDate = DateTime.Now,
                StartDate    = request.StartDate,
                EndDate      = request.EndDate,
                Details      = request.Details
            };

            _context.AdoptionRequests.Add(newRequest);
            _context.SaveChanges();

            AdoptionLogs newLog = new AdoptionLogs()
            {
                AdoptionRequestId = newRequest.AdoptionRequestId,
                AdoptionStateId   = 1,
                Date    = newRequest.ProposalDate,
                Details = newRequest.Details,
                UserId  = newRequest.UserId
            };

            _context.AdoptionLogs.Add(newLog);
            _context.SaveChanges();

            Animal animal = _context.Animals.FirstOrDefault(a => a.AnimalId == id);
            String preSex;

            if (animal.Gender[0] == 'M')
            {
                preSex = "ao";
            }
            else
            {
                preSex = "à";
            }

            String message = "<p>O seu pedido de adoção " + preSex + " " + animal.Name + " encontra-se para análise. Quando tivermos uma resposta" +
                             " será notificado.<p/> <img class='card - img - top img - fluid' id='pet - image' style='margin:auto; height: 25vw; object-fit: contain; ' src='" + newRequest.Animal.Image + "' alt='Card image cap'>";

            _notificationService.Register(_context, new UserNotification()
            {
                Title            = "Pedido de Adoção",
                Message          = message,
                NotificationDate = DateTime.Now,
                UserId           = newRequest.UserId
            }, _emailSender);
            return(RedirectToAction("MyNotifications", "UserNotifications"));
        }