Beispiel #1
0
        public async Task <IActionResult> Alter(int id)
        {
            AuktionModel auktionModel = await _service.GetAuktionAsync(id);

            if (auktionModel is null)
            {
                TempData["Message"] = "Misslyckades med att redigera auktionen! Auktionen finns inte i databasen.";
                return(RedirectToAction("Index"));
            }

            NauktionUser currentUser = await _userManager.GetUserAsync(User);

            if (auktionModel.SkapadAv != currentUser.Id)
            {
                TempData["Message"] = "Misslyckades med att redigera auktionen! Du kan inte redigera någon annans auktion.";
                return(RedirectToAction("Index"));
            }

            var model = new AuktionViewModel
            {
                AuktionID   = auktionModel.AuktionID,
                Titel       = auktionModel.Titel,
                Beskrivning = auktionModel.Beskrivning,
                SlutDatum   = auktionModel.SlutDatum,
                Utropspris  = auktionModel.Utropspris ?? 0
            };

            return(View(model));
        }
Beispiel #2
0
        public async Task <IActionResult> Alter(AuktionViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            AuktionModel auktionModel = await _service.GetAuktionAsync(model.AuktionID);

            if (auktionModel is null)
            {
                TempData["Message"] = "Misslyckades med att redigera auktionen! Auktionen finns inte i databasen.";
                return(RedirectToAction("Index"));
            }

            NauktionUser currentUser = await _userManager.GetUserAsync(User);

            if (auktionModel.SkapadAv != currentUser.Id)
            {
                TempData["Message"] = "Misslyckades med att redigera auktionen! Du kan inte redigera någon annans auktion.";
                return(RedirectToAction("Index"));
            }

            await _service.AlterAuktionAsync(model);

            TempData["Message"] = $"Dina ändringar till auktionen \"{model.Titel}\" har sparats!";
            return(View(model));
        }
Beispiel #3
0
 public ActionResult CreateAuction(AuktionModel model)
 {
     if (ModelState.IsValid)
     {
         int recordsCreated = AuctionProcessor.CreateAuction(model.Title,
                                                             model.Tid,
                                                             model.CurrentPrice,
                                                             model.MaxPrice);
         return(RedirectToAction("Index"));
     }
     return(View());
 }
        public static async Task <AuktionBudViewModel> GetAuktionBudsAsync(this IAuktionService service, int id)
        {
            AuktionModel auktion = await service.GetAuktionAsync(id);

            if (auktion is null)
            {
                return(null);
            }

            return(new AuktionBudViewModel(
                       auktion,
                       await service.ListBudsAsync(auktion.AuktionID)
                       ));
        }
        public async Task AlterAuktionAsync(AuktionViewModel model)
        {
            AuktionModel previous = await GetAuktionAsync(model.AuktionID);

            if (previous is null)
            {
                throw new NullReferenceException($"Auktion #{model.AuktionID} finns inte i databasen!");
            }

            previous.Titel       = model.Titel;
            previous.Beskrivning = model.Beskrivning;
            previous.SlutDatum   = model.SlutDatum;
            previous.Utropspris  = model.Utropspris;

            await _repository.AlterAuktionAsync(previous);
        }
        public async Task CreateAuktionAsync(AuktionModel model)
        {
            var formdata = new FormUrlEncodedContent(new Dictionary <string, string>
            {
                [nameof(model.Titel)]       = model.Titel,
                [nameof(model.Beskrivning)] = model.Beskrivning,
                [nameof(model.StartDatum)]  = model.StartDatum.ToString("u"),
                [nameof(model.SlutDatum)]   = model.SlutDatum.ToString("u"),
                [nameof(model.Utropspris)]  = model.Utropspris?.ToString() ?? "0",
                [nameof(model.Gruppkod)]    = model.Gruppkod.ToString(),
                [nameof(model.SkapadAv)]    = model.SkapadAv
            });

            HttpResponseMessage response = await _client.PostAsync("Auktion", formdata);

            response.EnsureSuccessStatusCode();
        }
Beispiel #7
0
        public void GetAuktion_GoesThroughService()
        {
            // Arrange
            var mockRepo = new Mock <IAuktionRepository>();
            var service  = new AuktionService(mockRepo.Object, null);

            var model = new AuktionModel();

            mockRepo.Setup(t => t.GetAuktionAsync(It.IsAny <int>()))
            .ReturnsAsync(model)
            .Verifiable();

            // Act
            AuktionModel result = service.GetAuktionAsync(1).Result;

            // Assert
            Assert.AreSame(model, result);
            mockRepo.Verify();
        }
        public async Task <string> ValidateBud(int auktionID, int summa, NauktionUser budgivare)
        {
            AuktionModel auktion = await GetAuktionAsync(auktionID);

            if (auktion is null)
            {
                return("Auktionen finns inte.");
            }

            if (auktion.IsClosed())
            {
                return("Du kan inte buda på en stängd auktion.");
            }

            if (summa <= auktion.Utropspris)
            {
                return("Budet måste vara större än utropspriset.");
            }

            List <BudModel> budModels = await ListBudsAsync(auktionID);

            BudModel highestBid = budModels.FirstOrDefault();

            if (highestBid is null)
            {
                return(null);
            }

            if (summa <= highestBid.Summa)
            {
                return("Budet måste vara större än det högsta budet.");
            }

            NauktionUser highestBidder = await _userManager.FindByIdAsync(highestBid.Budgivare);

            if (highestBidder?.Id == budgivare.Id)
            {
                return("Du kan inte buda när du har högsta budet.");
            }

            return(null);
        }