import streamlit as st
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
import warnings
warnings.filterwarnings("ignore")
import datetime
from datetime import date
import seaborn as sns
import calendar
import matplotlib.dates as mdates
import plotly.express as px
####### Load Dataset #####################

data_value = pd.read_excel(r'C:\Users\stani\Desktop\Webapp\st_zagora\data_for_python2.xlsx') 
df_value = pd.DataFrame(data_value)

#df['data'] = pd.to_datetime(df['data']).dt.date
df_value['data'] = pd.to_datetime(df_value.data, format='%Y-%m-%d')
df_value['year'] = pd.DatetimeIndex(df_value['data']).year
#print(df['year'].unique())

year_float=df_value['year'].unique()
df_value['quarter'] = df_value['data'].dt.quarter
quarter= df_value['quarter']
year=list(map(str,year_float))

st.set_page_config(layout="wide")



st.markdown("## Finance Performance Indicators in Dairy Farm")   ## Main Title

st.markdown("## The results for choiced period for criteries are:")

#df['quarter'] = df['data'].dt.to_period('Q')

#st.write(df['quarter'])



################# Scatter Chart Logic #################

st.sidebar.markdown("### Chooice year :")
axis_year = st.sidebar.multiselect(label ="Chooice year",
            options=year,
            default=['2019', '2020', '2021'])
choice_value = list(map(int, axis_year))


################# Histogram Logic ########################

st.sidebar.markdown("### Chooice quater :")
           
axis_quater = st.sidebar.multiselect(
    'Chooice quarter',
    ['Quarter 1', 'Quarter 2', 'Quarter 3', 'Quarter 4'],
           default= ['Quarter 1', 'Quarter 2', 'Quarter 3', 'Quarter 4'])
i = 0
while i < len(axis_quater):
 
    if axis_quater[i] == 'Quarter 1':
        axis_quater[i] = 1
 
    # replace pant with ishan
    if axis_quater[i] == 'Quarter 2':
        axis_quater[i] = 2
        
    if axis_quater[i] == 'Quarter 3':
        axis_quater[i] = 3
 
    if axis_quater[i] == 'Quarter 4':
        axis_quater[i] = 4
 
    i += 1
choice_quater=axis_quater

df1_value=df_value[df_value['year'].isin(choice_value) & df_value['quarter'].isin(choice_quater)]
#st.write(df1_value)
#production_cost_for_period=df1_value.groupby(df1_value.data.dt.year)['production cost'].sum()
#litter_period=df1_value.groupby(df1_value.data.dt.year)['litters'].sum()

production_cost_for_period=df1_value['production cost'].sum()
litter_period=df1_value['litters'].sum()
production_cost_per_litter=round(production_cost_for_period/litter_period,2)
cost_forage=df1_value['forage'].sum()
income_milk=df1_value['income milk'].sum()
ratio_milk_forage=income_milk/cost_forage
total_income_sum = df1_value['total_income'].sum()
month_flow_sum = df1_value['month_flow'].sum()
ratio_profit_revenue = (month_flow_sum/total_income_sum)
ratio_profit_revenue = round(ratio_profit_revenue)
profit_month_sum = df1_value['profit_month'].sum()
ratio_profit_litter=round(profit_month_sum/litter_period,2)
 
#st.write(ratio_profit_litter)
data=pd.read_excel(r'C:\Users\stani\Desktop\Webapp\st_zagora\criteria1.xlsx') 
df = pd.DataFrame(data)
#data_for_table = [['Production cost per litter', production_cost_per_litter], ['Ratio Milk-Forage', ratio_milk_forage], ['Ratio Profit-Revenue', ratio_profit_revenue], ['Profit per Litter', ratio_profit_litter]]
#data_for_table = [[production_cost_per_litter], [ratio_milk_forage], [ratio_profit_revenue], [ratio_profit_litter]]
# Create the pandas DataFrame
#df_table = pd.DataFrame(data_for_table, columns=['Criteria', 'Value'], index=['Production cost per litter', 'Ratio Milk-Forage', 'Ratio Profit-Revenue', 'Profit per Litter', ])
d = {'Criteria': pd.Series(['Production cost per litter', 'Ratio Milk-Forage', 'Ratio Profit-Revenue', 'Profit per Litter'],
                      index=['Production cost per litter', 'Ratio Milk-Forage', 'Ratio Profit-Revenue', 'Profit per Litter']),
     'Value': pd.Series([production_cost_per_litter, ratio_milk_forage, ratio_profit_revenue,  ratio_profit_litter],
                      index=['Production cost per litter', 'Ratio Milk-Forage', 'Ratio Profit-Revenue', 'Profit per Litter'])}

df_table = pd.DataFrame(d)
blankIndex=[''] * len(df_table)
df_table.index=blankIndex
# Using DataFrame.to_string() to print without index
#df_table2 = df_table.to_string(index=False)

st.table(df_table)
index=df.columns
loss = df.iloc[0]
zero = df.iloc[1]
low = df.iloc[2]
average = df.iloc[3]
high = df.iloc[4]
N = 1
ind = np.arange(N)    # the x locations for the groups
width = 0.35       # the width of the bars: can also be len(x) sequence
#st.write(df_value)

df2 = pd.DataFrame({"low": low, "average": average, "high": high}, index=index)

axis_criteria = st.sidebar.multiselect(
    'Chooice criteria',
    ['production_cost', 'milk_forage', 'profit_revenue', 'profit_litter'],
           default= ['production_cost', 'milk_forage', 'profit_revenue', 'profit_litter'])

i = 0
container1 = st.container()
col1, col2 = st.columns(2)
container2 = st.container()
col3, col4 = st.columns(2)
while i < len(axis_criteria):
    
    with container1:
        with col1:
        #if((axis_criteria[i] == 'production_cost') & (axis_criteria[i] == 'milk_forage'))
            if axis_criteria[i] == 'production_cost':
                axis_criteria[i] = 'production_cost'
                bar_fig1 = plt.figure(figsize=(6,4))
                bar_ax1 = bar_fig1.add_subplot(111)
                y1list = df["production_cost"].tolist()
                plt.savefig("output1.jpg")
                bar_ax1.bar(ind, y1list[2],   width, color='green', align='center', label='Low')
                bar_ax1.bar(ind, y1list[3], width, color='orange', bottom=y1list[2], align='center', label='Average')
                bar_ax1.bar(ind, y1list[4], width, color='red', bottom=y1list[2]+y1list[3], align='center', label='High')
                #st.write(y1list)
                production_cost_per_litter = production_cost_per_litter.astype(float)
                bar_ax1.plot(production_cost_per_litter, 'o-', lw=2, color='k', label='Calculate value')
                bar_ax1.set_ylabel('Lev')
                bar_ax1.set_title('Production cost per litter milk')
                bar_ax1.set_xticks(ind)
                bar_ax1.set_xlabel('Production cost')
                bar_ax1.legend()
                
                plt.show() 
                st.pyplot(bar_fig1)
                
        # replace pant with ishan
        with col2:
            if axis_criteria[i] == 'milk_forage':
                axis_criteria[i] = 'milk_forage'
                bar_fig2 = plt.figure(figsize=(6,4))
                bar_ax2 = bar_fig2.add_subplot(111)
                y2list = df["milk_forage"].tolist()
                #st.write(y2list)
                plt.savefig("output2.jpg")
                bar_ax2.bar(ind, y2list[2],   width, color='r', align='center', label='Low')
                bar_ax2.bar(ind, y2list[3], width, color='orange', bottom=y2list[2], align='center', label='Average')
                bar_ax2.bar(ind, y2list[4], width, color='g', bottom=y2list[2]+y2list[3], align='center', label='High')
                
                #production_cost_per_litter = production_cost_per_litter.astype(float)
                bar_ax2.plot(ratio_milk_forage, 'o-', lw=2, color='k', label='Calculate value')
                bar_ax2.set_ylabel('Ratio')
                bar_ax2.set_title('Ratio Milk-Forage')
                bar_ax2.set_xticks(ind)
                bar_ax2.set_xlabel('Milk Forage')
                bar_ax2.legend()
                
                plt.show() 
                st.pyplot(bar_fig2)
                
                #y2 = df2.loc[["milk_forage"]]
                #y2.plot.bar(stacked=True).figure, plt.xticks(rotation=0)
            #st.write(milk_forage)
    
    with container2:
        with col3:
            if axis_criteria[i] == 'profit_revenue':
                axis_criteria[i] = 'profit_revenue'
                bar_fig3 = plt.figure(figsize=(6,4))
                bar_ax3 = bar_fig3.add_subplot(111)
                #y3 = df2.loc[["profit_revenue"]]
                #y3.plot.bar(stacked=True).figure, plt.xticks(rotation=0)
              #  profit_revenue= df['profit_revenue']
                y3list = df["profit_revenue"].tolist()
                #st.write(y3list)
                plt.savefig("output3.jpg")
                bar_ax3.bar(ind, y3list[0],   width, color='r', align='center')
                bar_ax3.bar(ind, y3list[1],   width, color='r', bottom=y3list[0], align='center', label='Loss')
                bar_ax3.bar(ind, y3list[2], width, color='orange', bottom=y3list[0]+y3list[1], align='center', label='Low')
                bar_ax3.bar(ind, y3list[3], width, color='yellow', bottom=y3list[0]+y3list[1]+y3list[2], align='center', label='Average')
                bar_ax3.bar(ind, y3list[4], width, color='green', bottom=y3list[0]+y3list[1]+y3list[2]+y3list[3], align='center', label='High')
                
                #production_cost_per_litter = production_cost_per_litter.astype(float)
                bar_ax3.plot(ratio_profit_revenue, 'o-', lw=2, color='k', label='Calculate value')
                bar_ax3.set_ylabel('Percent')
                bar_ax3.set_title('Ratio Profit-Revenue')
                bar_ax3.set_xticks(ind)
                bar_ax3.set_xlabel('Profit Revenue')
                bar_ax3.legend()
                
                plt.show() 
                st.pyplot(bar_fig3)
              
        with col4:
            if axis_criteria[i] == 'profit_litter':
                axis_criteria[i] = 'profit_litter'
                bar_fig4 = plt.figure(figsize=(6,4))
                bar_ax4 = bar_fig4.add_subplot(111)
                y4list = df["profit_litter"].tolist()
                #st.write(y4list)
                plt.savefig("output4.jpg")
                bar_ax4.bar(ind, y4list[0],   width, color='r', align='center')
                bar_ax4.bar(ind, y4list[1],   width, color='r', bottom=y4list[0], align='center', label='Loss')
                bar_ax4.bar(ind, y4list[2], width, color='orange', bottom=y4list[0]+y4list[1], align='center', label='Low')
                bar_ax4.bar(ind, y4list[3], width, color='yellow', bottom=y4list[0]+y4list[1]+y4list[2], align='center', label='Average')
                bar_ax4.bar(ind, y4list[4], width, color='green', bottom=y4list[0]+y4list[1]+y4list[2]+y4list[3], align='center', label='High')
                
                #production_cost_per_litter = production_cost_per_litter.astype(float)
                bar_ax4.plot(ratio_profit_litter, 'o-', lw=2, color='k', label='Calculate value')
                bar_ax4.set_ylabel('Lev')
                bar_ax4.set_title('Profit per Litter')
                bar_ax4.set_xticks(ind)
                bar_ax4.set_xlabel('Profit per Litter')
                bar_ax4.legend()
                
                plt.show() 
                st.pyplot(bar_fig4)
                #y4 = df2.loc[["profit_litter"]]
                #y4.plot.bar(stacked=True).figure, plt.xticks(rotation=0)
              #  profit_litter= df['profit_litter']
     
            i += 1
        
#df3 = df2.loc[["production_cost", "milk_forage"]]   
  
#choice_criteria=axis_criteria
#df3 = df2.loc[choice_criteria]
#st.write(choice_criteria)
#for i in choice_criteria:
 #  if(i == "production_cost"):
  
                ##bar_fig1
  #  with col2:
   #elif(i == "milk_forage"):
    

   #elif(i == "profit_revenue"):
    
    
   #else:
    

#ax1=y1.plot.bar(stacked=True).figure, plt.xticks(rotation=0)

 
#st.pyplot(y1.plot.bar(stacked=True).figure, plt.xticks(rotation=0))
#ax2=y2.plot.bar(stacked=True).figure, plt.xticks(rotation=0)

#y1.plot.bar(stacked=True).figure, plt.xticks(rotation=0)

#st.bar_chart(y1)

#y2.plot.bar(stacked=True).figure, plt.xticks(rotation=0)
#st.bar_chart(y2)

#plt.show()
#st.pyplot.title('Income from milk in farm', fontsize=25)
#st.pyplot(ax1)
#st.pyplot(fig, ax1, ax2)
#fig, ax = plt.subplots(figsize=(15,8))
#ax.plot(ax.get_xticks(),#profit_per_litter,
 #     linestyle='-',
  # marker='o', linewidth=2.0)
#st.pyplot(fig)
#st.write(df1)
#plt.bar(x_axis_name, percent_Medicines_costs, color='r')

  #      y1.plot.bar(stacked=True).figure, plt.xticks(rotation=0)
    #    bar_fig1
    
     #   bar_fig2
    #    y2.plot.bar(stacked=True).figure, plt.xticks(rotation=0)
