package kr.itn.itnhub.org;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Service
public class OrganizationService {

    private final OrganizationMapper mapper;

    public OrganizationService(OrganizationMapper mapper) {
        this.mapper = mapper;
    }

    public List<OrgResponse> findAll() {
        return mapper.findAll().stream().map(OrgResponse::of).toList();
    }

    @Transactional
    public OrgResponse updateContact(Long id, ContactRequest request) {
        Organization org = mapper.findById(id);
        if (org == null) {
            throw new OrgNotFoundException("기관을 찾을 수 없습니다: " + id);
        }
        org.setDeptName(request.deptName());
        org.setManagerName(request.managerName());
        org.setManagerTitle(request.managerTitle());
        org.setManagerPhone(request.managerPhone());
        org.setManagerEmail(request.managerEmail());
        org.setMjDeptName(request.mjDeptName());
        org.setMjManagerName(request.mjManagerName());
        org.setMjManagerPhone(request.mjManagerPhone());
        org.setMjManagerEmail(request.mjManagerEmail());
        org.setLawyerName(request.lawyerName());
        org.setLawyerPhone(request.lawyerPhone());
        org.setLawyerEmail(request.lawyerEmail());
        org.setLawyerAssignedDate(request.lawyerAssignedDate());
        mapper.updateContact(org);

        return OrgResponse.of(mapper.findById(id));
    }
}
