package com.hepl.tunefortwo.service.impl;

import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;

import org.springframework.http.HttpStatus;
import org.springframework.http.HttpStatusCode;
import org.springframework.stereotype.Service;
import org.springframework.web.server.ResponseStatusException;

import com.hepl.tunefortwo.dto.FormRequestDto;
import com.hepl.tunefortwo.dto.OrderSummaryDto;
import com.hepl.tunefortwo.entity.Filed;
import com.hepl.tunefortwo.entity.Form;
import com.hepl.tunefortwo.entity.OrderSummary;
import com.hepl.tunefortwo.repository.OrderSummaryRepository;
import com.hepl.tunefortwo.service.OrderSummaryService;
import com.hepl.tunefortwo.utils.AppMessages;

import jakarta.mail.MessagingException;
@Service
public class OrderSummaryServiceImp implements OrderSummaryService {
	
	private final OrderSummaryRepository orderSummaryRepository ;
	
	public OrderSummaryServiceImp(OrderSummaryRepository orderSummaryRepository) {
		this.orderSummaryRepository = orderSummaryRepository;
	}

//	@Override
	public void updateorderSummary(String id ,double languageAmount, double VersionAmount, double masterAmount,
			double deliverydateAmount, double totalAmount,double artistAmount) {
		OrderSummary orderSummary = orderSummaryRepository.findById(id)
				.orElseThrow(()->new ResponseStatusException(HttpStatus.BAD_REQUEST,AppMessages.RESOURCE_NOT_FOUND));
		orderSummary.setLangugaeAmount(languageAmount);
		orderSummary.setDeliverydateAmount(deliverydateAmount);
		orderSummary.setMasterAmount(masterAmount);
//		add new total amount data 
//		orderSummary.setTotalAmount(orderSummary.getTotalAmount());
		orderSummary.setUpdatedAt(LocalDateTime.now());
		orderSummary.setVersionAmount(VersionAmount);
		orderSummary.setArtistAmount(artistAmount);
		orderSummaryRepository.save(orderSummary);
	}
	@Override
	public OrderSummary getordersummarybyid(String id) {
		Optional<OrderSummary> optionalOrderSummary=Optional.of(orderSummaryRepository.findById(id)
				.orElseThrow(()->new ResponseStatusException(HttpStatus.NOT_FOUND,
						AppMessages.ORDERSUMMARY_NOT_FOUND+ "with OrderNumber: " + id)));
		OrderSummary orderSummary=optionalOrderSummary.get();
		orderSummary.setTotalAmount(orderSummary.getLangugaeAmount()+orderSummary.getMasterAmount()+orderSummary.getVersionAmount()+orderSummary.getDeliverydateAmount()+orderSummary.getArtistAmount());
		return orderSummary;
		
	}

	@Override
	public OrderSummary saveOrderSummary(OrderSummaryDto ordersummarydto,double total) throws MessagingException{
		 
	        OrderSummary orderSummaryData = new OrderSummary ();
	        orderSummaryData.setDeliverydateAmount(ordersummarydto.getDeliverydateAmount());
	        orderSummaryData.setLangugaeAmount(ordersummarydto.getLanguageAmount());
	        orderSummaryData.setMasterAmount(ordersummarydto.getMasterAmount());
	        orderSummaryData.setVersionAmount(ordersummarydto.getVersionAmount());
	        orderSummaryData.setTotalAmount(total);
	        orderSummaryData.setCreatedAt(LocalDateTime.now());
	        orderSummaryData.setArtistAmount(ordersummarydto.getArtistAmount());
	        
	        return orderSummaryRepository.save(orderSummaryData);
}}
