package com.ikon.projectmanagement.mapper;

import org.springframework.stereotype.Component;

import com.ikon.projectmanagement.dto.request.RiskCreateRequestDto;
import com.ikon.projectmanagement.dto.response.RiskResponseDto;
import com.ikon.projectmanagement.entity.Risks;

@Component
public class RiskMapper {

    public Risks toEntity(RiskCreateRequestDto dto) {
        Risks risk = new Risks();
        risk.setRiskTitle(dto.getRiskTitle());
        risk.setRiskProbability(dto.getRiskProbability());
        risk.setGrossRiskValue(dto.getGrossRiskValue());
        risk.setProbableRiskValue(dto.getProbableRiskValue());
        risk.setProbableRiskValueInUSD(dto.getProbableRiskValueInUSD());
        risk.setRiskImpact(dto.getRiskImpact());
        risk.setRiskOwner(dto.getRiskOwner());
        risk.setRiskDescription(dto.getRiskDescription());
        risk.setFinancialRisk(dto.getFinancialRisk());
        risk.setRiskCreatedDate(dto.getRiskCreatedDate());
        risk.setRiskOptionsSelectId(dto.getRiskOptionsSelectId());
        risk.setRiskStatus(dto.getRiskStatus());
        risk.setRiskAge(dto.getRiskAge());
        risk.setEffectedSprintId(dto.getEffectedSprintId());
        risk.setProjectIdentifier(dto.getProjectIdentifier());
        return risk;
    }

    public RiskResponseDto toResponse(Risks risk) {
        RiskResponseDto dto = new RiskResponseDto();
        dto.setRiskIdentifier(risk.getRiskIdentifier());
        dto.setRiskTitle(risk.getRiskTitle());
        dto.setRiskProbability(risk.getRiskProbability());
        dto.setGrossRiskValue(risk.getGrossRiskValue());
        dto.setProbableRiskValue(risk.getProbableRiskValue());
        dto.setProbableRiskValueInUSD(risk.getProbableRiskValueInUSD());
        dto.setRiskImpact(risk.getRiskImpact());
        dto.setRiskOwner(risk.getRiskOwner());
        dto.setRiskDescription(risk.getRiskDescription());
        dto.setFinancialRisk(risk.getFinancialRisk());
        dto.setRiskCreatedDate(risk.getRiskCreatedDate());
        dto.setRiskOptionsSelectId(risk.getRiskOptionsSelectId());
        dto.setRiskStatus(risk.getRiskStatus());
        dto.setRiskAge(risk.getRiskAge());
        dto.setEffectedSprintId(risk.getEffectedSprintId());
        // Now using plain UUID field instead of
        // risk.getProject().getProjectIdentifier()
        dto.setProjectIdentifier(risk.getProjectIdentifier());
        return dto;
    }

    public void updateEntityFromDto(RiskCreateRequestDto dto, Risks risk) {
        if (dto.getRiskTitle() != null)
            risk.setRiskTitle(dto.getRiskTitle());
        if (dto.getRiskProbability() != null)
            risk.setRiskProbability(dto.getRiskProbability());
        if (dto.getGrossRiskValue() != null)
            risk.setGrossRiskValue(dto.getGrossRiskValue());
        if (dto.getProbableRiskValue() != null)
            risk.setProbableRiskValue(dto.getProbableRiskValue());
        if (dto.getProbableRiskValueInUSD() != null)
            risk.setProbableRiskValueInUSD(dto.getProbableRiskValueInUSD());
        if (dto.getRiskImpact() != null)
            risk.setRiskImpact(dto.getRiskImpact());
        if (dto.getRiskOwner() != null)
            risk.setRiskOwner(dto.getRiskOwner());
        if (dto.getRiskDescription() != null)
            risk.setRiskDescription(dto.getRiskDescription());
        if (dto.getFinancialRisk() != null)
            risk.setFinancialRisk(dto.getFinancialRisk());
        if (dto.getRiskCreatedDate() != null)
            risk.setRiskCreatedDate(dto.getRiskCreatedDate());
        if (dto.getRiskOptionsSelectId() != null)
            risk.setRiskOptionsSelectId(dto.getRiskOptionsSelectId());
        if (dto.getRiskStatus() != null)
            risk.setRiskStatus(dto.getRiskStatus());
        if (dto.getRiskAge() != null)
            risk.setRiskAge(dto.getRiskAge());
        if (dto.getEffectedSprintId() != null)
            risk.setEffectedSprintId(dto.getEffectedSprintId());
        if (dto.getProjectIdentifier() != null)
            risk.setProjectIdentifier(dto.getProjectIdentifier());
    }

}