package com.github.hantsy.ee8sample.web;

import com.github.hantsy.ee8sample.domain.Task;
import com.github.hantsy.ee8sample.service.TaskService;

import java.io.Serializable;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.inject.Named;

import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.view.ViewScoped;

/**
 *
 * @author hantsy
 *
 */
@Named("editTaskAction")
@ViewScoped()
public class EditTaskAction implements Serializable {

    /**
     *
     */
    private static final long serialVersionUID = 1L;

    //@Inject
    private static final Logger LOG = Logger.getLogger(EditTaskAction.class.getName());

    @Inject
    private TaskService taskService;

    private Long taskId;

    private Task task;

    public Task getTask() {
        return task;
    }

    public void setTaskId(Long taskId) {
        this.taskId = taskId;
    }

    public Long getTaskId() {
        return taskId;
    }

    public void setTask(Task task) {
        this.task = task;
    }

    public void init() {
        LOG.log(Level.INFO, " get task of id @{0}", taskId);

        if (taskId == null) {
            task = new Task();
        } else {
            task = taskService.findById(taskId);
        }

    }

    public String save() {
        LOG.log(Level.INFO, "saving task@{0}", task);
        if (this.task.getId() == null) {
            this.task = taskService.save(task);
        } else {
            this.task = taskService.update(taskId, task);
        }
        FacesMessage info = new FacesMessage(FacesMessage.SEVERITY_INFO, "Task is saved successfully!", "Task is saved successfully!");
        FacesContext.getCurrentInstance().addMessage(null, info);

        return "/tasks.xhtml?faces-redirect=true";
    }

}