using GB5Shared.DTO.Framework.AutoNumber; using GB5Shared.DTO.Framework.Login; using GB5Shared.GenerateAutoNumber; using PayRollBLL.Contact; using PayRollDAL.CustomeCode.Contact; using PayRollDAL.DTO.Address; using System; using System.Threading.Tasks; namespace PayRollBLL.CustomCode.Contact { public class ContactBLL : IContactBLL { private readonly IContactDAL _contactDAL; private readonly AutoNumber _autoNumber; public ContactBLL(IContactDAL contactDAL, AutoNumber autoNumber) { _contactDAL = contactDAL; _autoNumber = autoNumber; } public async Task SaveOrUpdateContactAsync(ContactDTO contactDTO, LoginDTO loginDTO, int employeeId) { if (contactDTO == null) return -1; // Changed from throw to return -1 for consistency bool isNew = contactDTO.ContactId == 0; // Generate Contact ID if new if (isNew) { AutoNumberDTO contactAutoNumber = await _autoNumber.GetNumberAsync(1, "CONTACT", loginDTO); contactDTO.ContactId = contactAutoNumber.StartNumber; } // Common fields contactDTO.ObjectTypeId = -1399999905; // Employee entity contactDTO.ContactObjectId = employeeId; contactDTO.ContactCreatedById = loginDTO.UserId; contactDTO.ContactCreatedOn = DateTime.UtcNow; contactDTO.ContactModifiedById = loginDTO.UserId; contactDTO.ContactModifiedOn = DateTime.UtcNow; // Set SourceType from JSON (value: 3) contactDTO.ContactSourceType = 3; // Insert or Update if (isNew) { await _contactDAL.SaveContact(contactDTO, loginDTO); } else { await _contactDAL.UpdateContact(contactDTO, loginDTO); } return contactDTO.ContactId; } } }