// Path: jcart-core/src/main/java/com/sivalabs/jcart/entities/Customer.java
// @Entity
// @Table(name="customers")
// public class Customer implements Serializable
// {
// 	private static final long serialVersionUID = 1L;
// 	@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
// 	private Integer id;
// 	@Column(name="firstname", nullable=false)
// 	@NotEmpty
// 	private String firstName;
// 	@Column(name="lastname")
// 	private String lastName;
// 	@NotEmpty
// 	@Email
// 	@Column(name="email", nullable=false, unique=true)
// 	private String email;
// 	@NotEmpty
// 	@Column(name="password", nullable=false)
// 	private String password;
// 	private String phone;
// 	
// 	public Integer getId()
// 	{
// 		return id;
// 	}
// 	public void setId(Integer id)
// 	{
// 		this.id = id;
// 	}
// 	public String getFirstName()
// 	{
// 		return firstName;
// 	}
// 	public void setFirstName(String firstName)
// 	{
// 		this.firstName = firstName;
// 	}
// 	public String getLastName()
// 	{
// 		return lastName;
// 	}
// 	public void setLastName(String lastName)
// 	{
// 		this.lastName = lastName;
// 	}
// 	public String getEmail()
// 	{
// 		return email;
// 	}
// 	public void setEmail(String email)
// 	{
// 		this.email = email;
// 	}
// 	public String getPhone()
// 	{
// 		return phone;
// 	}
// 	public void setPhone(String phone)
// 	{
// 		this.phone = phone;
// 	}
// 	public String getPassword() {
// 		return password;
// 	}
// 	public void setPassword(String password) {
// 		this.password = password;
// 	}
// 	
// }
// 
// Path: jcart-core/src/main/java/com/sivalabs/jcart/entities/Order.java
// @Entity
// @Table(name="orders")
// public class Order implements Serializable
// {
// 	private static final long serialVersionUID = 1L;
// 	@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
// 	private Integer id;
// 	@Column(nullable=false, unique=true)
// 	private String orderNumber;
// 	@OneToMany(cascade=CascadeType.ALL, mappedBy="order")
// 	private Set<OrderItem> items;
// 	@ManyToOne(cascade=CascadeType.MERGE)
// 	@JoinColumn(name="cust_id")
// 	private Customer customer;
// 	@OneToOne(cascade=CascadeType.PERSIST)
// 	@JoinColumn(name="delivery_addr_id")
// 	private Address deliveryAddress;
// 	@OneToOne(cascade=CascadeType.PERSIST)
// 	@JoinColumn(name="billing_addr_id")
// 	private Address billingAddress;
// 	@OneToOne(cascade=CascadeType.PERSIST)
// 	@JoinColumn(name="payment_id")
// 	private Payment payment;
// 	@Enumerated(EnumType.STRING)
// 	private OrderStatus status;
// 	@Temporal(TemporalType.TIMESTAMP)
// 	@Column(name="created_on")
// 	private Date createdOn;
// 	
// 	public Order()
// 	{
// 		this.items = new HashSet<OrderItem>();
// 		this.status = OrderStatus.NEW;
// 		this.createdOn = new Date();
// 	}
// 	
// 	public Integer getId()
// 	{
// 		return id;
// 	}
// 	public void setId(Integer id)
// 	{
// 		this.id = id;
// 	}
// 	
// 	public String getOrderNumber()
// 	{
// 		return orderNumber;
// 	}
// 
// 	public void setOrderNumber(String orderNumber)
// 	{
// 		this.orderNumber = orderNumber;
// 	}
// 
// 	public Set<OrderItem> getItems()
// 	{
// 		return items;
// 	}
// 	public void setItems(Set<OrderItem> items)
// 	{
// 		this.items = items;
// 	}
// 	public Customer getCustomer()
// 	{
// 		return customer;
// 	}
// 	public void setCustomer(Customer customer)
// 	{
// 		this.customer = customer;
// 	}
// 	public Address getDeliveryAddress()
// 	{
// 		return deliveryAddress;
// 	}
// 	public void setDeliveryAddress(Address deliveryAddress)
// 	{
// 		this.deliveryAddress = deliveryAddress;
// 	}
// 	public Payment getPayment()
// 	{
// 		return payment;
// 	}
// 	public void setPayment(Payment payment)
// 	{
// 		this.payment = payment;
// 	}
// 	public OrderStatus getStatus()
// 	{
// 		return status;
// 	}
// 	public void setStatus(OrderStatus status)
// 	{
// 		this.status = status;
// 	}
// 	public Date getCreatedOn()
// 	{
// 		return createdOn;
// 	}
// 	public void setCreatedOn(Date createdOn)
// 	{
// 		this.createdOn = createdOn;
// 	}
// 
// 	public Address getBillingAddress() {
// 		return billingAddress;
// 	}
// 
// 	public void setBillingAddress(Address billingAddress) {
// 		this.billingAddress = billingAddress;
// 	}
// 
// 	
// 	public BigDecimal getTotalAmount()
// 	{
// 		BigDecimal amount = new BigDecimal("0.0");
// 		for (OrderItem item : items)
// 		{
// 			amount = amount.add(item.getSubTotal());
// 		}
// 		return amount;
// 	}
// 	
// }


import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.sivalabs.jcart.entities.Customer;
import com.sivalabs.jcart.entities.Order;
/**
 * 
 */
package com.sivalabs.jcart.customers;




/**
 * @author Siva
 *
 */
@Service
@Transactional
public class CustomerService {
	@Autowired CustomerRepository customerRepository;
	
// Path: jcart-core/src/main/java/com/sivalabs/jcart/entities/Customer.java
// @Entity
// @Table(name="customers")
// public class Customer implements Serializable
// {
// 	private static final long serialVersionUID = 1L;
// 	@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
// 	private Integer id;
// 	@Column(name="firstname", nullable=false)
// 	@NotEmpty
// 	private String firstName;
// 	@Column(name="lastname")
// 	private String lastName;
// 	@NotEmpty
// 	@Email
// 	@Column(name="email", nullable=false, unique=true)
// 	private String email;
// 	@NotEmpty
// 	@Column(name="password", nullable=false)
// 	private String password;
// 	private String phone;
// 	
// 	public Integer getId()
// 	{
// 		return id;
// 	}
// 	public void setId(Integer id)
// 	{
// 		this.id = id;
// 	}
// 	public String getFirstName()
// 	{
// 		return firstName;
// 	}
// 	public void setFirstName(String firstName)
// 	{
// 		this.firstName = firstName;
// 	}
// 	public String getLastName()
// 	{
// 		return lastName;
// 	}
// 	public void setLastName(String lastName)
// 	{
// 		this.lastName = lastName;
// 	}
// 	public String getEmail()
// 	{
// 		return email;
// 	}
// 	public void setEmail(String email)
// 	{
// 		this.email = email;
// 	}
// 	public String getPhone()
// 	{
// 		return phone;
// 	}
// 	public void setPhone(String phone)
// 	{
// 		this.phone = phone;
// 	}
// 	public String getPassword() {
// 		return password;
// 	}
// 	public void setPassword(String password) {
// 		this.password = password;
// 	}
// 	
// }
// 
// Path: jcart-core/src/main/java/com/sivalabs/jcart/entities/Order.java
// @Entity
// @Table(name="orders")
// public class Order implements Serializable
// {
// 	private static final long serialVersionUID = 1L;
// 	@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
// 	private Integer id;
// 	@Column(nullable=false, unique=true)
// 	private String orderNumber;
// 	@OneToMany(cascade=CascadeType.ALL, mappedBy="order")
// 	private Set<OrderItem> items;
// 	@ManyToOne(cascade=CascadeType.MERGE)
// 	@JoinColumn(name="cust_id")
// 	private Customer customer;
// 	@OneToOne(cascade=CascadeType.PERSIST)
// 	@JoinColumn(name="delivery_addr_id")
// 	private Address deliveryAddress;
// 	@OneToOne(cascade=CascadeType.PERSIST)
// 	@JoinColumn(name="billing_addr_id")
// 	private Address billingAddress;
// 	@OneToOne(cascade=CascadeType.PERSIST)
// 	@JoinColumn(name="payment_id")
// 	private Payment payment;
// 	@Enumerated(EnumType.STRING)
// 	private OrderStatus status;
// 	@Temporal(TemporalType.TIMESTAMP)
// 	@Column(name="created_on")
// 	private Date createdOn;
// 	
// 	public Order()
// 	{
// 		this.items = new HashSet<OrderItem>();
// 		this.status = OrderStatus.NEW;
// 		this.createdOn = new Date();
// 	}
// 	
// 	public Integer getId()
// 	{
// 		return id;
// 	}
// 	public void setId(Integer id)
// 	{
// 		this.id = id;
// 	}
// 	
// 	public String getOrderNumber()
// 	{
// 		return orderNumber;
// 	}
// 
// 	public void setOrderNumber(String orderNumber)
// 	{
// 		this.orderNumber = orderNumber;
// 	}
// 
// 	public Set<OrderItem> getItems()
// 	{
// 		return items;
// 	}
// 	public void setItems(Set<OrderItem> items)
// 	{
// 		this.items = items;
// 	}
// 	public Customer getCustomer()
// 	{
// 		return customer;
// 	}
// 	public void setCustomer(Customer customer)
// 	{
// 		this.customer = customer;
// 	}
// 	public Address getDeliveryAddress()
// 	{
// 		return deliveryAddress;
// 	}
// 	public void setDeliveryAddress(Address deliveryAddress)
// 	{
// 		this.deliveryAddress = deliveryAddress;
// 	}
// 	public Payment getPayment()
// 	{
// 		return payment;
// 	}
// 	public void setPayment(Payment payment)
// 	{
// 		this.payment = payment;
// 	}
// 	public OrderStatus getStatus()
// 	{
// 		return status;
// 	}
// 	public void setStatus(OrderStatus status)
// 	{
// 		this.status = status;
// 	}
// 	public Date getCreatedOn()
// 	{
// 		return createdOn;
// 	}
// 	public void setCreatedOn(Date createdOn)
// 	{
// 		this.createdOn = createdOn;
// 	}
// 
// 	public Address getBillingAddress() {
// 		return billingAddress;
// 	}
// 
// 	public void setBillingAddress(Address billingAddress) {
// 		this.billingAddress = billingAddress;
// 	}
// 
// 	
// 	public BigDecimal getTotalAmount()
// 	{
// 		BigDecimal amount = new BigDecimal("0.0");
// 		for (OrderItem item : items)
// 		{
// 			amount = amount.add(item.getSubTotal());
// 		}
// 		return amount;
// 	}
// 	
// }


// Path: jcart-core/src/main/java/com/sivalabs/jcart/customers/CustomerService.java
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.sivalabs.jcart.entities.Customer;
import com.sivalabs.jcart.entities.Order;

/**
 * 
 */
package com.sivalabs.jcart.customers;




/**
 * @author Siva
 *
 */
@Service
@Transactional
public class CustomerService {
	@Autowired CustomerRepository customerRepository;
	
	public Customer getCustomerByEmail(String email) {