From ad4b0be03335fc3fe9b65675449cafd05d592421 Mon Sep 17 00:00:00 2001 From: mahan Date: Thu, 25 Dec 2025 11:28:29 +0330 Subject: [PATCH] fix: improve error handling and streamline activation process in ActiveAll method --- .../Repository/EmployerRepository.cs | 49 +++++++++---------- 1 file changed, 24 insertions(+), 25 deletions(-) diff --git a/CompanyManagment.EFCore/Repository/EmployerRepository.cs b/CompanyManagment.EFCore/Repository/EmployerRepository.cs index 626cdfa4..c92d2f2e 100644 --- a/CompanyManagment.EFCore/Repository/EmployerRepository.cs +++ b/CompanyManagment.EFCore/Repository/EmployerRepository.cs @@ -722,34 +722,33 @@ public class EmployerRepository : RepositoryBase, IEmployerRepos public OperationResult ActiveAll(long id) { OperationResult result = new OperationResult(); - using (var transaction = _context.Database.BeginTransaction()) + try { - try + var employer = _context.Employers.FirstOrDefault(x => x.id == id); + if (employer == null) { - var employer = _context.Employers.FirstOrDefault(x => x.id == id); - employer.Active(); - - var workshopIds = _context.WorkshopEmployers.Where(x => x.EmployerId == id).Select(x => x.WorkshopId) - .ToList(); - var workshops = _context.Workshops.Where(x => workshopIds.Contains(x.id)).ToList(); - workshops.ForEach(x => x.Active(x.ArchiveCode)); - - var contracts = _context.Contracts.Where(x => workshopIds.Contains(x.WorkshopIds)).ToList(); - contracts.ForEach(x => x.Active()); - - var contractIds = contracts.Select(x => x.id).ToList(); - var checkouts = _context.CheckoutSet.Where(x => contractIds.Contains(x.ContractId)).ToList(); - checkouts.ForEach(x => x.Active()); - - _context.SaveChanges(); - transaction.Commit(); - result.Succcedded(); - } - catch (Exception) - { - result.Failed("فعال کردن کارفرما با خطا مواجه شد"); - transaction.Rollback(); + return result.Failed("کارفرما یافت نشد"); } + employer.Active(); + + var workshopIds = _context.WorkshopEmployers.Where(x => x.EmployerId == id).Select(x => x.WorkshopId) + .ToList(); + var workshops = _context.Workshops.Where(x => workshopIds.Contains(x.id)).ToList(); + workshops.ForEach(x => x.Active(x.ArchiveCode)); + + var contracts = _context.Contracts.Where(x => workshopIds.Contains(x.WorkshopIds)).ToList(); + contracts.ForEach(x => x.Active()); + + var contractIds = contracts.Select(x => x.id).ToList(); + var checkouts = _context.CheckoutSet.Where(x => contractIds.Contains(x.ContractId)).ToList(); + checkouts.ForEach(x => x.Active()); + + _context.SaveChanges(); + result.Succcedded(); + } + catch (Exception) + { + result.Failed("فعال کردن کارفرما با خطا مواجه شد"); } return result;