Changes between Version 4 and Version 5 of AdvancedApplicationDevelopment


Ignore:
Timestamp:
09/09/26 03:16:50 (3 days ago)
Author:
231241
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AdvancedApplicationDevelopment

    v4 v5  
    77{{{
    88[HttpPost]
    9 [ValidateAntiForgeryToken]
    10 public IActionResult Register(RegisterViewModel model)
    11 {
    12     if (!ModelState.IsValid)
    13         return View(model);
    14 
    15     if (_context.Users.Any(x => x.Username == model.Username))
    16     {
    17         ModelState.AddModelError(
    18             "Username",
    19             "Username is already taken.");
    20 
    21         return View(model);
    22     }
    23 
    24     if (_context.Users.Any(x => x.Email == model.Email))
    25     {
    26         ModelState.AddModelError(
    27             "Email",
    28             "Email is already registered.");
    29 
    30         return View(model);
    31     }
    32 
    33     using var transaction =
    34         _context.Database.BeginTransaction();
    35 
    36     try
    37     {
    38         var user = new User
    39         {
    40             Email = model.Email,
    41             Username = model.Username,
    42             Password = model.Password,
    43             DateCreated = DateTime.Today,
    44             ShippingAddress = model.ShippingAddress,
    45             TelephoneNumber = model.TelephoneNumber
    46         };
    47 
    48         _context.Users.Add(user);
    49         _context.SaveChanges();
    50 
    51         var consumer = new Consumer
    52         {
    53             UserId = user.UserId,
    54             PointsCollected = 0
    55         };
    56 
    57         _context.Consumers.Add(consumer);
    58         _context.SaveChanges();
    59 
    60         transaction.Commit();
    61 
    62         return RedirectToAction(nameof(Login));
    63     }
    64     catch
    65     {
    66         transaction.Rollback();
    67         throw;
    68     }
    69 }
     9    [ValidateAntiForgeryToken]
     10    public IActionResult Register(RegisterViewModel model)
     11    {
     12        if (!ModelState.IsValid)
     13            return View(model);
     14
     15        if (_context.Users.Any(x => x.Username == model.Username))
     16        {
     17            ModelState.AddModelError(
     18                "Username",
     19                "Username is already taken.");
     20
     21            return View(model);
     22        }
     23
     24        if (_context.Users.Any(x => x.Email == model.Email))
     25        {
     26            ModelState.AddModelError(
     27                "Email",
     28                "Email is already registered.");
     29
     30            return View(model);
     31        }
     32
     33        using var transaction =
     34            _context.Database.BeginTransaction();
     35
     36        try
     37        {
     38            var user = new User
     39            {
     40                Email = model.Email,
     41                Username = model.Username,
     42                DateCreated = DateTime.Today,
     43                ShippingAddress = model.ShippingAddress,
     44                TelephoneNumber = model.TelephoneNumber
     45            };
     46
     47            user.Password =
     48                _passwordHasher.HashPassword(
     49                    user,
     50                    model.Password);
     51
     52            _context.Users.Add(user);
     53            _context.SaveChanges();
     54
     55            var consumer = new Consumer
     56            {
     57                UserId = user.UserId,
     58                PointsCollected = 0
     59            };
     60
     61            _context.Consumers.Add(consumer);
     62            _context.SaveChanges();
     63
     64            transaction.Commit();
     65
     66            return RedirectToAction(nameof(Login));
     67        }
     68        catch
     69        {
     70            transaction.Rollback();
     71            throw;
     72        }
     73    }
    7074}}}
    7175
     
    161165}}}
    162166
     167==== Adding a product to a wishlist
     168
     169{{{
     170[HttpPost]
     171[ValidateAntiForgeryToken]
     172public IActionResult Add(long productId)
     173{
     174    var sessionUserId =
     175        HttpContext.Session.GetInt32("UserId");
     176
     177    if (!sessionUserId.HasValue)
     178    {
     179        return RedirectToAction(
     180            "Login",
     181            "Account");
     182    }
     183
     184    var userId =
     185        (long)sessionUserId.Value;
     186
     187
     188    var product =
     189        _context.Products
     190            .FirstOrDefault(p =>
     191                p.ProductId == productId);
     192
     193    if (product == null)
     194        return NotFound();
     195
     196
     197    using var transaction =
     198        _context.Database.BeginTransaction();
     199
     200    try
     201    {
     202        var wishlist =
     203            _context.Wishlists
     204                .FirstOrDefault(w =>
     205                    w.UserId == userId);
     206
     207       
     208        if (wishlist == null)
     209        {
     210            wishlist = new Wishlist
     211            {
     212                WishlistId =
     213                    GetNextWishlistId(),
     214
     215                UserId =
     216                    userId
     217            };
     218
     219
     220            _context.Wishlists.Add(
     221                wishlist);
     222
     223            _context.SaveChanges();
     224        }
     225
     226       
     227        var alreadyExists =
     228            _context.WishlistProducts
     229                .Any(wp =>
     230                    wp.WishlistId ==
     231                    wishlist.WishlistId &&
     232                    wp.ProductId ==
     233                    productId);
     234
     235
     236        if (!alreadyExists)
     237        {
     238            var wishlistProduct =
     239                new WishlistProduct
     240                {
     241                    WishlistId =
     242                        wishlist.WishlistId,
     243
     244                    ProductId =
     245                        productId
     246                };
     247
     248
     249            _context.WishlistProducts.Add(
     250                wishlistProduct);
     251
     252            _context.SaveChanges();
     253        }
     254
     255
     256        transaction.Commit();
     257
     258
     259        TempData["Success"] =
     260            "Product added to your wishlist.";
     261
     262
     263        return RedirectToAction(
     264            nameof(Index));
     265    }
     266    catch
     267    {
     268        transaction.Rollback();
     269
     270        throw;
     271    }
     272}
     273}}}
     274
    163275== Pooling
    164276