Changes between Version 4 and Version 5 of AdvancedApplicationDevelopment


Ignore:
Timestamp:
02/24/26 06:15:54 (3 hours ago)
Author:
221181
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AdvancedApplicationDevelopment

    v4 v5  
    3838== Трансакции ==
    3939
    40 === 1. Креирање на продажба (!SaleService.cs) ===
     40=== Креирање на продажба (!SaleService.cs) ===
    4141
    4242Зошто Transaction?
     
    8181}}}
    8282
    83 === 2. Примање на нарачка (!PurchaseOrderService.cs) ===
     83=== Примање на нарачка (!PurchaseOrderService.cs) ===
    8484
    8585Зошто Transaction?
     
    162162}
    163163}}}
     164
     165=== Креирање на корисник (!AuthService.cs) ===
     166
     167Зошто Transaction?
     168
     169При креирање на корисник, за да се обезбеди целосност при хеширање на лозинка и при доделување улоги, како и за идни дополнителни операции.
     170
     171{{{
     172public async Task<bool> CreateUserAsync(User user, string password)
     173{
     174    using var transaction = await _context.Database.BeginTransactionAsync();
     175    try
     176    {
     177        user.Password = BCrypt.Net.BCrypt.HashPassword(password);
     178
     179        _context.Users.Add(user);
     180        await _context.SaveChangesAsync();
     181
     182        await transaction.CommitAsync();
     183        return true;
     184    }
     185    catch
     186    {
     187        await transaction.RollbackAsync();
     188        return false;
     189    }
     190}
     191}}}
     192
     193=== Бришење на производ (!ProductService.cs) ===
     194
     195Зошто Transaction?
     196
     197Се користи Soft Delete (поставување на производот како неактивен). Ова е критична промена на податоци и ако врската со базата се прекине за време на процесот, состојбата на производот не смее да остане недефинирана.
     198
     199{{{
     200public async Task<bool> DeleteProductAsync(int id)
     201{
     202    using var transaction = await _context.Database.BeginTransactionAsync();
     203    try
     204    {
     205        var product = await _context.Products.FindAsync(id);
     206
     207        if (product != null)
     208        {
     209            product.IsActive = false;
     210            await _context.SaveChangesAsync();
     211
     212            await transaction.CommitAsync();
     213            return true;
     214        }
     215
     216        return false;
     217    }
     218    catch
     219    {
     220        await transaction.RollbackAsync();
     221        return false;
     222    }
     223}
     224}}}