<?php

/**
 * 1. określić jakie rekordy pokazać jako taski
 * 2. filtrować wyniki
 * 
 * -- koresp : 301
SELECT
	kor.ID
	, kor.ID_PROJECT
	, kor.A_STATUS
	, kor.L_APPOITMENT_USER
	, kor.L_APPOITMENT_DATE
	, kor.L_APPOITMENT_INFO
	, kor.A_RECORD_CREATE_DATE
-- ? echo '<td>'.$h['K_TYP_KORESP']." -".$h['K_TYP_RODZAJ']." (".$h['K_TYP_RODZAJ_OPIS'].")".'</td>';
--		echo '<td>'.$h['K_OD_KOGO']."/".$h['OD_KOGO_ADRES']."/".$h['K_ZAWARTOS'].'</td>';
	, kor.K_OD_KOGO
	, kor.OD_KOGO_ADRES
	, kor.K_ZAWARTOS
-- TODO:	, proj.M_DIST_DESC
	, kor.K_LOKALIZACJA
	, kor.K_LOKALIZACJA_OPIS
FROM `IN7_DZIENNIK_KORESP` as kor
WHERE kor.`A_STATUS` NOT IN ('OFF_HARD','DELETED')
 * -- proj : 1155
SELECT proj.ID
	, proj.A_STATUS
	, proj.M_DIST_DESC
	, proj.M_DIST_TYPE
-- ?	, proj.M_DIST_DATE, proj.M_DISTRIBUTOR
-- ? echo '<td>'."Wpr: ".$h['A_RECORD_CREATE_AUTHOR']."/ akt : ".$h['A_RECORD_UPDATE_AUTHOR']."(".$h['A_RECORD_UPDATE_DATE'].")".'</td>';
-- ? echo '<td>'." <b>".$h['A_PROBLEM']."  ".$h['A_PROBLEM_DATE']."</b><font color=\"#444444\"><pre>  ".$h['A_PROBLEM_DESC']."</pre></font>".
FROM `IN7_MK_BAZA_DYSTRYBUCJI` as proj
WHERE proj.`A_STATUS` NOT IN ('OFF_HARD','DELETED')
 * -- proces: musi być l_app i l_app_date
select p.*
		from `CRM_PROCES` as p
		where p.`TYPE`='PROCES_INIT'
			and p.`A_STATUS` in('NORMAL', 'WAITING')
			and p.`L_APPOITMENT_DATE`!=''
			and p.`L_APPOITMENT_USER`!=''
--------------------------------------------------------------------------
koresp bez ID_PROJ, bez L_APP - pokazać się osobie z A_CREATE_AUTHOR
koresp z L_APP - pokazać się osobie z L_APP
koresp bez L_APP, z ID_PROJ i proj ma L_APP to pokazać się proj.L_APP
koresp bez L_APP, z ID_PROJ i proj nie ma L_APP ale proj z p_ID ma l_app to pokazać się proj_parent.L_APP
j/w 10 poziomów w górę

proj bez L_APP, szukać w górę, 

 *
 * Filtry:
 *   Wszystkie/Moje/konkretny: 
 *   Data: PO_TERMINIE, DZISIAJ, W_CIAGU_7_DNI
 *   Sortowanie: od najbliższej daty powrotu (l_app_date)
 * 
 * Tabela tasków:
 * -- termin wykonania
 * -- czego dotyczy PROJEKT/KORESP/PROCES + link nr rekordu
 * -- type rekordu kor.K_TYP_KORESP itd.; proj.M_DIST_TYPE; proc.TYPE
 * -- opis co zrobić (Od kogo/temat/sprawa)
 * -- lokalizacja kor.
 * 
 * 
 */
function PRZYPOMNIJ() {

	if (User::get('ADM_ADMIN_LEVEL') > 5) {
		SE_Layout::menu();
		?>
		<div class="container">
			<div class="alert alert-error">
				Brak dostępu!
			</div>
		</div>
		<?php
		SE_Layout::dol();
		die();
	}

	Lib::loadClass('ProcesHelper');
	$zasobProjID = ProcesHelper::getZasobTableID('IN7_MK_BAZA_DYSTRYBUCJI');
	$zasobKorespID = ProcesHelper::getZasobTableID('IN7_DZIENNIK_KORESP');

	Lib::loadClass('Przypomnij');
	$przypomnij = new Przypomnij();
	$przypomnij->setRecurseLimit(3);// TODO: 10

	$task = V::get('task', '', $_GET);
	if ($task == 'AJAX_EDIT_INLINE') {
		// ?FUNCTION_INIT=PRZYPOMNIJ&HEADER_NOT_INIT=YES&task=AJAX_EDIT_INLINE
		// $_GET [rowid] => 2286, [type] => proces
		$przypomnij->sendAjaxEditAppDateInline();
		exit;
	}
	else if ($task == 'AJAX_EDIT_INLINE_SAVE') {
		// ?FUNCTION_INIT=PRZYPOMNIJ&HEADER_NOT_INIT=YES&task=AJAX_EDIT_INLINE_SAVE
		// $_GET [rowid] => 2286, [type] => proces, [fldId] => date
		$przypomnij->sendAjaxEditAppDateInlineSave();
		exit;
	}

	SE_Layout::menu();

$sqlAllowedUsersList = $przypomnij->getAllowedUsersList();


$selected_user = isset($_GET['KTO'])? $_GET['KTO'] : '';//$_SERVER['argv'][1];
$selected_user_err = '';
if (!empty($selected_user)) {
	if (!array_key_exists($selected_user, $sqlAllowedUsersList)) {
		$selected_user = '';
		$selected_user_err = 'Brak danych - wybierz innego użytkownika';
	}
}

$hideFltrs = $przypomnij->getDateHideFltrTypes();

?>
<style type="text/css">
.frm-przypomnij { width:96%; margin:0 auto 10px auto; table-layout:fixed; }

.tbl-przypomnij { width:96%; margin:0 auto 10px auto; table-layout:fixed; }
 .tbl-przypomnij td,
 .tbl-przypomnij th { overflow:hidden; }
 .tbl-przypomnij .l_app_date { white-space:nowrap; }
 .tbl-przypomnij .date-PO_TERMINIE   .l_app_date { color:#FD4242; }
 .tbl-przypomnij .date-DZISIAJ       .l_app_date { color:#34B934; }
 .tbl-przypomnij .date-W_CIAGU_7_DNI .l_app_date { color:#C58B1F; }
 .tbl-przypomnij .date-PO_7_DNIACH   .l_app_date { color:#87847D; }

.use-filtr_only_stare tr.l-app-stare{display:none;}
.fltr-hide_PROJEKT tr.type-PROJEKT {display:none;}
.fltr-hide_KORESP  tr.type-KORESP {display:none;}
.fltr-hide_PROCES  tr.type-PROCES {display:none;}
.fltr-hide_PO_TERMINIE   tr.date-PO_TERMINIE   {display:none;}
.fltr-hide_DZISIAJ       tr.date-DZISIAJ       {display:none;}
.fltr-hide_W_CIAGU_7_DNI tr.date-W_CIAGU_7_DNI {display:none;}
.fltr-hide_PO_7_DNIACH   tr.date-PO_7_DNIACH   {display:none;}
.fltr-hide_BRAK          tr.date-BRAK          {display:none;}

.nobr {white-space:nowrap;}
</style>
<script type="text/javascript">
function przypomnij_update_counters() {
	var taskTypeStatMap = {
			PROCES: 'przypomnij_stats-procesy'
			, KORESP: 'przypomnij_stats-pisma'
			, PROJEKT: 'przypomnij_stats-projekty'
		}
		, taskStats = {};
	for (var i in taskTypeStatMap) taskStats[i] = 0;

	jQuery('.tbl-przypomnij').find('tbody tr:visible').each(function(ind, task){
		task = jQuery(task);
		//console.log('node i:', ind, 'node:', task, 'isProces:', task.hasClass('type-PROCES'));
		for (var i in taskTypeStatMap) {
			if (task.hasClass('type-' + i)) {
				taskStats[i] += 1;
			}
		}
	});

	for (var i in taskTypeStatMap) {
		jQuery('#' + taskTypeStatMap[i]).text(taskStats[i]);
	}
}

jQuery(document).ready(function(){
	jQuery('#filtr_show_PROJEKT').click(function(e){
		var n=jQuery(this);
		var tbl=jQuery('table.tbl-przypomnij');
		if (n.is(':checked')) {
			tbl.removeClass('fltr-hide_PROJEKT');
		} else {
			tbl.addClass('fltr-hide_PROJEKT');
		}
		przypomnij_update_counters();
	});
	jQuery('#filtr_show_KORESP').click(function(e){
		var n=jQuery(this);
		var tbl=jQuery('table.tbl-przypomnij');
		if (n.is(':checked')) {
			tbl.removeClass('fltr-hide_KORESP');
		} else {
			tbl.addClass('fltr-hide_KORESP');
		}
		przypomnij_update_counters();
	});
	jQuery('#filtr_show_PROCES').click(function(e){
		var n=jQuery(this);
		var tbl=jQuery('table.tbl-przypomnij');
		if (n.is(':checked')) {
			tbl.removeClass('fltr-hide_PROCES');
		} else {
			tbl.addClass('fltr-hide_PROCES');
		}
		przypomnij_update_counters();
	});

	jQuery('#filtr_show_PO_TERMINIE').click(function(e){
		var n=jQuery(this);
		var tbl=jQuery('table.tbl-przypomnij');
		if (n.is(':checked')) {
			tbl.removeClass('fltr-hide_PO_TERMINIE');
		} else {
			tbl.addClass('fltr-hide_PO_TERMINIE');
		}
		przypomnij_update_counters();
	});
	jQuery('#filtr_show_DZISIAJ').click(function(e){
		var n=jQuery(this);
		var tbl=jQuery('table.tbl-przypomnij');
		if (n.is(':checked')) {
			tbl.removeClass('fltr-hide_DZISIAJ');
		} else {
			tbl.addClass('fltr-hide_DZISIAJ');
		}
		przypomnij_update_counters();
	});
	jQuery('#filtr_show_W_CIAGU_7_DNI').click(function(e){
		var n=jQuery(this);
		var tbl=jQuery('table.tbl-przypomnij');
		if (n.is(':checked')) {
			tbl.removeClass('fltr-hide_W_CIAGU_7_DNI');
		} else {
			tbl.addClass('fltr-hide_W_CIAGU_7_DNI');
		}
		przypomnij_update_counters();
	});
	jQuery('#filtr_show_PO_7_DNIACH').click(function(e){
		var n=jQuery(this);
		var tbl=jQuery('table.tbl-przypomnij');
		if (n.is(':checked')) {
			tbl.removeClass('fltr-hide_PO_7_DNIACH');
		} else {
			tbl.addClass('fltr-hide_PO_7_DNIACH');
		}
		przypomnij_update_counters();
	});
	jQuery('#filtr_show_BRAK').click(function(e){
		var n=jQuery(this);
		var tbl=jQuery('table.tbl-przypomnij');
		if (n.is(':checked')) {
			tbl.removeClass('fltr-hide_BRAK');
		} else {
			tbl.addClass('fltr-hide_BRAK');
		}
		przypomnij_update_counters();
	});
});
</script>
<form action="" method="get" class="frm-przypomnij form-inline">
	<input type="hidden" name="MENU_INIT" value="<?php echo __FUNCTION__; ?>">
	<a href="index.php?MENU_INIT=<?php echo __FUNCTION__; ?>">Wszyscy</a>
	 | 
	<a href="index.php?MENU_INIT=<?php echo __FUNCTION__; ?>&KTO=<?php echo $_SESSION['AUTHORIZE_USER']; ?>" >Twoje (<?php echo $_SESSION['AUTHORIZE_USER']; ?>)</a>
	 | 
	<?php if (!empty($sqlAllowedUsersList)) : ?>
		<select name="KTO">
		<option value=""> Wszyscy </option>
		<?php foreach ($sqlAllowedUsersList as $k => $v) : ?>
			<?php $sel = ($k == $selected_user)? ' selected="selected"' : ''; ?>
			<option value="<?php echo $k; ?>" <?php echo $sel; ?>><?php echo $k; ?></option>
		<?php endforeach; ?>
		</select>
	<?php endif; ?>
	<input type="submit" value="Pokaż">

	<span style="padding:0 0 0 30px;">
		<label><strong>Pokaż: </strong></label>
		<label class="checkbox">
			<input type="checkbox" name="filtr_show_PROJEKT" checked="checked" value="1" id="filtr_show_PROJEKT" />
			projekt
		</label>

		<label class="checkbox">
			<input type="checkbox" name="filtr_show_KORESP" checked="checked" value="1" id="filtr_show_KORESP" />
			korespondencja
		</label>

		<label class="checkbox">
			<input type="checkbox" name="filtr_show_PROCES" checked="checked" value="1" id="filtr_show_PROCES" />
			procesy
		</label>
	</span>

	<span style="padding:0 0 0 30px;">
		<label><strong>Data: </strong></label>
		<label class="checkbox">
			<input type="checkbox" name="filtr_show_PO_TERMINIE" checked="checked" value="1" id="filtr_show_PO_TERMINIE" />
			po terminie
		</label>

		<label class="checkbox">
			<input type="checkbox" name="filtr_show_DZISIAJ" checked="checked" value="1" id="filtr_show_DZISIAJ" />
			dzisiaj
		</label>

		<label class="checkbox">
			<input type="checkbox" name="filtr_show_W_CIAGU_7_DNI" checked="checked" value="1" id="filtr_show_W_CIAGU_7_DNI" />
			w ciagu 7 dni
		</label>

		<label class="checkbox">
			<input type="checkbox" name="filtr_show_PO_7_DNIACH" value="1" id="filtr_show_PO_7_DNIACH" />
			po 7 dniach
		</label>

		<label class="checkbox">
			<input type="checkbox" name="filtr_show_BRAK" value="1" id="filtr_show_BRAK" />
			brak
		</label>
	</span>
<?php
	if(V::get('DBG_P', '', $_GET)){echo'<input type="hidden" name="DBG_P" value="1">';}
echo'</form>';


if ($selected_user_err) {
	echo '<div class="alert alert-error">' . $selected_user_err . '</div>';
	return;
}

$przypomnij->fetchData();
$przypomnij->setFltrUser($selected_user);

$data = $przypomnij->getRawData();
if(V::get('DBG_P', '', $_GET)){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">$data (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($data);echo'</pre>';}

$tasks = $przypomnij->getTasksByDate();
if(V::get('DBG_P', '', $_GET)){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">$tasks (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($tasks);echo'</pre>';}


$ILOSC_PISM = 0;
$ILOSC_SPRAW = 0;
$ILOSC_PROCES = 0;

/*
 * Tabela tasków:
 * -- termin wykonania
 * -- czego dotyczy PROJEKT/KORESP/PROCES + link nr rekordu
 * -- typ rekordu kor.K_TYP_KORESP itd.; proj.M_DIST_TYPE; proc.TYPE
 * -- opis co zrobić (Od kogo/temat/sprawa)
 * -- lokalizacja kor.
 */

$dateFltrTypes = $przypomnij->getDateFltrTypes();

?>
<table class="tbl-przypomnij table table-bordered table-hover fltr-hide_PO_7_DNIACH fltr-hide_BRAK">
	<thead>
		<tr>
			<th style="width:100px">Termin wykonania</th>
			<th style="width:20%">Opis działań do wykonania</th>
			<th style="width:190px">Typ rekordu / ID</th>
			<th>Firma powiąz. / adres / opis-temat</th>
			<th style="width:100px">Lokalizacja</th>
		</tr>
	</thead>
	<tbody>
		<?php foreach ($tasks as $id => $task) : ?>
			<?php
				if (!$task->_show) continue;

				if ($task->_task_type == 'projekt') {
					$ILOSC_SPRAW += 1;
				} else if ($task->_task_type == 'koresp') {
					$ILOSC_PISM += 1;
				} else if ($task->_task_type == 'proces') {
					$ILOSC_PROCES += 1;
				}

				$clsData = $przypomnij->getTaskDateFltrType($task->_l_app_date);

				$task_zasobID = $przypomnij->getZasobIdByType($task->_task_type);
			?>
			<tr id="<?php echo "row-{$task->_task_type}-{$task->ID}"; ?>" class="type-<?php echo strtoupper($task->_task_type) . ' ' . $clsData; ?>">
				<td class="l_app_date-edit_inline" data-type="<?php echo $task->_task_type; ?>" data-rowid="<?php echo $task->ID; ?>"><strong class="l_app_date"><?php echo $task->_l_app_date; ?></strong>
					<div class="l_app_user">
						<?php if (empty($task->_l_app)) : ?>
							<em class="label label-important">Nieprzypisany!</em>
						<?php else : ?>
							<em><?php echo $task->_l_app; ?></em>
						<?php endif; ?>
					</div>
				</td>
				<td class="l_app_info l_app_date-edit_inline" data-type="<?php echo $task->_task_type; ?>" data-rowid="<?php echo $task->ID; ?>"><?php echo $task->L_APPOITMENT_INFO; ?></td>
				<td>
					<h5>
						<a href="index.php?MENU_INIT=VIEWTABLE_AJAX&ZASOB_ID=<?php echo $task_zasobID; ?>#EDIT/<?php echo $task->ID; ?>" target="_blank" title="Edytuj rekord">
							<i class="ico-pencil"></i>
							<?php echo strtoupper($task->_task_type); ?>
							<?php echo $task->ID; ?>
						</a>
						<a href="index.php?MENU_INIT=VIEWTABLE_AJAX&ZASOB_ID=<?php echo $task_zasobID; ?>#FILES/<?php echo $task->ID; ?>" target="_blank" title="Pliki">
							<i class="ico-folder-open"></i>
							pliki
						</a>
					</h5>
					<span class="label label-A_STATUS-<?php echo $task->A_STATUS; ?>"><?php echo $task->A_STATUS; ?></span>
					<em><?php echo $task->_type; ?></em>
				</td>
				<td>
					<?php if ($task->_task_type == 'projekt' && !empty($task->M_DISTRIBUTOR)) : ?>
						<strong><?php echo $task->M_DISTRIBUTOR; ?></strong><br>
					<?php endif; ?>
					<?php echo $task->_title; ?>
				</td>
				<td>
					<?php if ($task->_task_type == 'koresp') : ?>
						<em><?php echo $task->K_LOKALIZACJA_OPIS; ?></em>
					<?php endif; ?>
				</td>
			</tr>
		<?php endforeach; ?>
	</tbody>
</table>

<div class="container">
Ilość pism: <span id="przypomnij_stats-pisma"><?php echo $ILOSC_PISM; ?></span>,
	ilość spraw: <span id="przypomnij_stats-projekty"><?php echo $ILOSC_SPRAW; ?></span>,
	ilość procesów: <span id="przypomnij_stats-procesy"><?php echo $ILOSC_PROCES; ?></span>.
</div>

<div class="przypomnijInlineEditBox inlineEditBox modal hide fade" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
	<form style="margin:0;padding:0;">
		<div class="modal-header">
			<button type="button" class="close" data-dismiss="modal" aria-hidden="true"><i class="icon-remove"></i></button>
			<h3 id="myModalLabel">Edytuj</h3>
		</div>
		<div class="modal-body">
			<input type="hidden" name="rowid" value="">
			<input type="hidden" name="type" value="">
			<div class="inlineEditBox-cnt"></div>
		</div>
		<div class="modal-footer">
			<button class="btn" data-dismiss="modal" aria-hidden="true">Zamknij</button>
			<input type="submit" value="Zapisz" class="btn btn-primary btn-save">
		</div>
	</form>
</div>

<script>
var _inlineEditBox;

jQuery(document).ready(function(){
	_inlineEditBox = jQuery('.przypomnijInlineEditBox');

	var frmInlineEdit = _inlineEditBox.find('form');

	frmInlineEdit.on('submit', function() {
		var frmData = _inlineEditBox.find('form').serialize();
		var task_rowid = frmInlineEdit.find('input[name=rowid]').val();
		var task_type = frmInlineEdit.find('input[name=type]').val();
		_inlineEditBox.find('.btn-save').hide();
		_inlineEditBox.find('.inlineEditBox-cnt').html('<span class="loading-info"> loading ...</span>');
		jQuery.ajax({
			url: 'index.php?FUNCTION_INIT=PRZYPOMNIJ&HEADER_NOT_INIT=YES&task=AJAX_EDIT_INLINE_SAVE',
			type: 'POST',
			dataType: 'text',
			data: frmData,
			async: true,
			success: function (data) {
				//console.log('_inlineEditBox submit ajax data:', data);
				_inlineEditBox.find('.inlineEditBox-cnt').html(data);
				_inlineEditBox.find('.btn-save').hide();
				//TODO: reload page [or values]; publ.loadPage(_currPage);
				//console.log('_inlineEditBox submit ajax success');
				var upNode = _inlineEditBox.find('.inlineEditBox-cnt').find('.EditAppDateInlineSave');
				if (upNode) {
					var taskNode = jQuery('#row-'+task_type+'-'+task_rowid);
					if (upNode.find('.l_app_user').text().length > 0) {
						taskNode.find('.l_app_user').html('<em>'+upNode.find('.l_app_user').text()+'</em>');
					} else {
						taskNode.find('.l_app_user').html('<em class="label label-important">Nieprzypisany!</em>');
					}
					taskNode.find('.l_app_date').html(upNode.find('.l_app_date').text());
					taskNode.find('.l_app_info').html(upNode.find('.l_app_info').text());

					// .date_fltr_type
					var fltrTypes = <?php echo json_encode($dateFltrTypes); ?>
						, fltrTypeCur = ''
						, fltrTypeNew = upNode.find('.date_fltr_type').text();

					for (var i in fltrTypes) {
						if (taskNode.hasClass(fltrTypes[i])) {
							fltrTypeCur = fltrTypes[i];
							break;
						}
					}

					//console.log('fltrTypeNew', fltrTypeNew, ' fltrTypeCur', fltrTypeCur, ' fltrTypes', fltrTypes);
					if (fltrTypeCur == fltrTypeNew) {
						//console.log('fltrTypeCur == fltrTypeNew', fltrTypeCur, ' == ', fltrTypeNew);
					} else {
						//console.log('fltrTypeCur != fltrTypeNew', fltrTypeCur, ' != ', fltrTypeNew);
						taskNode.removeClass(fltrTypeCur);
						taskNode.addClass(fltrTypeNew);
					}
				}

				przypomnij_update_counters();
			},
			error: function (jhr, textStatus, errorThrown) {
				//console.log('_inlineEditBox submit ajax error');
			}
		});

		return false;
	});

	jQuery('.l_app_date-edit_inline').on('dblclick', function(e){
		var data = $(this).data();
		// rowid: 2266, type: "projekt"

		if (!data.type || !data.rowid) {
			return false;
		}

		_inlineEditBox.modal();
		_inlineEditBox.show();
		_inlineEditBox.find('input[name=rowid]').val(data.rowid);
		_inlineEditBox.find('input[name=type]').val(data.type);
		_inlineEditBox.find('.inlineEditBox-cnt').html('<span class="loading-info"> loading ...</span>');

		$.ajax({
			url: 'index.php?FUNCTION_INIT=PRZYPOMNIJ&HEADER_NOT_INIT=YES&task=AJAX_EDIT_INLINE',
			//index-ajax.php?_zasobID=_zasobID&_cls=__CLASS__&_hash=_htmlID&_task=EDIT_INLINE&ID=' + e.data.id + '&col=' + e.data.col,
			type: 'GET',
			dataType: 'text',
			data: data,
			async: true,
			success: function (data) {
				_inlineEditBox.find('.inlineEditBox-cnt').html(data);
				_inlineEditBox.find('.btn-save').show();

				_inlineEditBox.find('.se_type-date').datepicker({
					format: "yyyy-mm-dd"
					, language: 'pl'
					, todayBtn: "linked"
				});
				_inlineEditBox.find('.se_type-datetime').parent().datetimepicker({
					language: 'pl'
					, format: 'yyyy-MM-dd hh:mm'
					, weekStart: 1
				});

				_inlineEditBox.find('textarea').autosize();

				var fld = _inlineEditBox.find('input[id^="f"]');
				if (fld && !fld.hasClass('se_type-date')) {
					fld.focus();

					fld.keydown(function(event) {
						if (event.which == 13) {
							event.preventDefault();
							_inlineEditBox.find('form').submit();
						}
					});
				}
			},
			error: function (err) {
				console.log('err', err);
			}
		});
	});

});

</script>


<?php
}
