package com.sharefaith.thesharefaithapp.models;

import org.json.JSONException;
import org.json.JSONObject;

import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;

/**
 * Created by sfwebsitedev on 11/22/16.
 * Model for Calendar Event
 */

public class SFCalendarEventModel
{
    /** Title of event */
    public String mTitle = "";
    /** Description of event */
    public String mDescription = "";
    /** Location of event */
    public String mLocation = "";
    /** Start date of event */
    public String mStartDate = "";
    /** End date of event */
    public String mEndDate = "";
    /** Start time of event */
    public int mStartTime = 0;
    /** End time of event */
    public int mEndTime = 0;
    /** Parsed human readable date for event */
    public String mDate = "";

    /**
     * Constructor
     * @param event
     */
    public SFCalendarEventModel( JSONObject event )
    {
        try
        {
            mTitle = URLDecoder.decode( event.get( "title" ).toString(),"UTF-8" );
            mDescription = URLDecoder.decode( event.get( "description" ).toString(),"UTF-8" );
            mLocation = URLDecoder.decode( event.get( "location" ).toString(),"UTF-8" );
            mStartDate = URLDecoder.decode( event.get( "start" ).toString(),"UTF-8" );
            mEndDate = event.get( "end" ).toString();
            mStartTime = Integer.valueOf( event.get( "startTime" ).toString() );
            mEndTime = Integer.valueOf( event.get( "endTime" ).toString() );

            if(mStartTime == 0 && mEndTime == 0) //all day
            {
               mDate = "\nAll Day";
            }
            else
            {
                String postfix = "";
                if( mStartTime < 1200 )
                {
                    if(mStartTime < 100 )
                    {
                        mStartTime = mStartTime + 1200;
                    }
                    postfix = " AM ";
                }
                else
                {
                    if( mStartTime >= 1300 )
                    {
                        mStartTime = mStartTime -1200;
                    }
                    postfix = " PM ";
                }

                String startTimeString = String.valueOf( mStartTime );
                String hour = "";
                String minute = "";
                if(startTimeString.length() == 3)
                {
                    hour = startTimeString.substring( 0,1 );
                    minute = startTimeString.substring( 1,3 );
                }
                else
                {
                    hour = startTimeString.substring( 0,2 );
                    minute = startTimeString.substring( 2,4 );
                }
                startTimeString = hour + ":" + minute;

                if(mStartTime >= mEndTime || mEndTime == 0) //start only
                {
                    mDate = "\nStarts at " + startTimeString + postfix;
                }
                else
                {
                    mDate = "\nFrom " + startTimeString + postfix + " until ";

                    if( mEndTime < 1200 )
                    {
                        if(mEndTime < 100 )
                        {
                            mEndTime = mEndTime + 1200;
                        }
                        postfix = " AM ";
                    }
                    else
                    {
                        if( mEndTime >= 1300 )
                        {
                            mEndTime = mEndTime -1200;
                        }
                        postfix = " PM ";
                    }

                    startTimeString = String.valueOf( mEndTime );
                    hour = "";
                    minute = "";
                    if(startTimeString.length() == 3)
                    {
                        hour = startTimeString.substring( 0,1 );
                        minute = startTimeString.substring( 1,3 );
                    }
                    else
                    {
                        hour = startTimeString.substring( 0,2 );
                        minute = startTimeString.substring( 2,4 );
                    }
                    startTimeString = hour + ":" + minute;
                    mDate += startTimeString + postfix;
                }
            }

            //Log.d("mtag","start: " + mStartTime + ", end: " + mEndTime);
        } catch (JSONException e)
        {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e)
        {
            e.printStackTrace();
        }
    }
}
