/* Banana-Chat - The first Open Source Knuddels Emulator
 * Copyright (C) 2011 - 2012 Flav <http://banana-coding.com>
 * 
 * Diese Dateien unterliegen dem Coprytight von Banana-Coding und
 * darf verändert, aber weder in andere Projekte eingefügt noch
 * reproduziert werden.
 * 
 * Der Emulator dient - sofern der Client nicht aus Eigenproduktion
 * stammt - nur zu Lernzwecken, das Hosten des originalen Knuddels Clients
 * ist auf eigene Gefahr und verstößt möglicherweise gegen Schutzrechte
 * der Knuddels.de GmbH & Co KG
 * 
 * Autoren: Flav (Grundversion), Localhost (Erweiterte Version), Kokos-Ice (Erweiterte Version)
 */



package handler;

import netchat.*;
import tools.PacketCreator;
import tools.popup.*;

public class RoseHandler {
    public static void handle(String[] tokens, Client client) {
        if (tokens[1].equals("rose")) { 
            String name = tokens[3].trim();
            String text = tokens[4].trim();
            
            if(client.getRosesSend() == 0) {
            	client.send(PacketCreator.createRoseWindow(name, text));
                client.send(Popup.create("Problem", "Problem", "#Du hast in dieser Woche bereits eine Rose versandt, mehr ist nicht möglich.", 400, 250));
                return;
            }
            
            if(name.equalsIgnoreCase(client.getName())) {
            	client.send(PacketCreator.createRoseWindow(name, text));
                client.send(Popup.create("Problem", "Problem", "#Du kannst dir nicht selbst eine Rose schicken!", 400, 250));
                return;
            }
            
            Client target = Server.get().getClient(name);
            boolean online = true;

            if (target == null) {
                online = false;
                target = new Client(null);
                target.loadStats(name);

                if(target.getName() == null) {
                	client.send(PacketCreator.createRoseWindow(name, text));
                    client.send(Popup.create("Problem", "Problem", String.format("#Den Nicknamen %s gibt es nicht.", name), 400, 250));
                    return;
               }
            }
            
            if(online == true) {
            	client.send(PacketCreator.createRoseWindow(name, text));
                client.send(Popup.create("Problem", "Problem", String.format("#%s ist im Chat online, Rosen können nur an Chatter vergeben werden, die offline sind.", target.getName()), 400, 250));
                return;
            }
            
            if(text.isEmpty()) {
            	client.send(PacketCreator.createRoseWindow(name, text));
                client.send(Popup.create("Problem", "Problem", "#Ein Text für die Rose muss angegeben werden!", 400, 250));
                return;
            }
            
            if(text.length() > 2000) {
            	client.send(PacketCreator.createRoseWindow(name, text));
                client.send(Popup.create("Problem", "Problem", "#Der Text für die Rose ist zu lang (maximal 2000 Zeichen)!", 400, 250));
                return;
            }
            
            client.send(Popup.create("Rose ist auf dem Weg", "Rose ist auf dem Weg", String.format("Deine Rose wird %s schnellstens überreicht.", target.getName()), 400, 250));
            client.setRosesSend((byte) (client.getRosesSend() - 1));
            Server.get().newRose(client, target.getName(), text, System.currentTimeMillis()/1000);
        }
    }        
}