/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { //Check params has a id $user = Yii::$app->user->identity; $id = $user->level == 2 ? $user->parent_id : $user->id; $query = Mood::find()->joinWith('user')->where('user.parent_id=:parent_id', [':parent_id' => $id]); $dataProvider = new ActiveDataProvider(['query' => $query, 'pagination' => ['pagesize' => 8]]); $this->load($params); if (!$this->validate()) { // uncomment the following line if you do not want to return any records when validation fails // $query->where('0=1'); return $dataProvider; } $query->andFilterWhere(['id' => $this->id, 'user_id' => $this->user_id, 'date' => $this->date, 'time' => $this->time]); $query->andFilterWhere(['like', 'mood', $this->mood]); $query->andFilterWhere(['>=', 'date', $this->start_date])->andFilterWhere(['<=', 'date', $this->end_date]); return $dataProvider; }
/** * Creates a new Mood model. * If creation is successful, the browser will be redirected to the 'view' page. * @return mixed */ public function actionCreate() { $model = new Mood(); $date = date("Y-m-d"); if ($model->load(Yii::$app->request->post()) && Mood::find()->where(['user_id' => Yii::$app->user->getId(), 'date' => $date])->count() < (int) Yii::$app->find->setting('number_of_moods_a_day')) { $model->user_id = Yii::$app->user->getId(); $model->date = date('Y-m-d'); $model->time = date('Y-m-d h:i:s'); if ($model->save()) { //Yii::$app->session->setFlash('success', 'Mood successfully Set.'); //return $this->redirect(['user/child']); Yii::$app->notification->notify($model->mood, $model, Yii::$app->user->identity, Yii::$app->controller->id); echo "<div class='mood-title'>" . "You are " . $model->mood . " Now" . "<span class='font-small pull-right label label-danger'>" . ((int) Yii::$app->find->findSettings()['moodsNumber']->option_value - Mood::find()->where(['user_id' => Yii::$app->user->getId(), 'date' => date("Y-m-d")])->count()) . "</span>" . "</div>"; } else { Yii::$app->session->setFlash('danger', 'Something Error'); } } else { echo "You are out of entries"; } return $this->renderAjax('create', ['model' => $model]); }
/** * Display user dashboard * @param integer $id User ID */ public function actionDashboard($id = null) { //Check user level & existence of $id $id = Yii::$app->user->identity->level == 0 && $id != null ? $id : Yii::$app->user->id; $model = User::findOne($id); $photos = \app\models\Photos::getItems(); $journals = new ActiveDataProvider(['query' => Journal::find()->where('FIND_IN_SET(' . $id . ', shared_with)')->orWhere(['user_id' => $id])->orderBy(['date' => SORT_DESC])->limit(5), 'pagination' => false]); if ($model->level == 3) { //if the user is child $moods = new ActiveDataProvider(['query' => Mood::find()->select('mood')->where(['user_id' => $id])->orderBy(['date' => SORT_DESC, 'time' => SORT_DESC])->limit(1), 'pagination' => false]); $DataProvider = new ActiveDataProvider(['query' => $model->findParents(), 'pagination' => ['pageSize' => 20]]); return $this->render('childdashboard', ['dataProvider' => $DataProvider, 'journalProvider' => $journals, 'moodsProvider' => $moods, 'moods' => new Mood(), 'model' => $model, 'photos' => $photos]); } else { //if the user is parent $events = new ActiveDataProvider(['query' => \app\models\Event::find()->where('FIND_IN_SET(' . $id . ', shared_with)')->orWhere(['user_id' => $id])->orderBy(['date' => SORT_DESC])->limit(5), 'pagination' => false]); $wishlists = new ActiveDataProvider(['query' => \app\models\Wishlist::find()->where(['assigned_to' => $id, 'status' => 0])->orderBy('id')->limit(5), 'pagination' => false]); $DataProvider = new ActiveDataProvider(['query' => $model->findFamily()]); $activity = new ActiveDataProvider(['query' => \app\models\Activity::find()->where(['user_id' => Yii::$app->user->id])->orderBy(['id' => SORT_DESC])->limit(4), 'pagination' => false]); return $this->render('dashboard', ['dataProvider' => $DataProvider, 'activity' => $activity, 'events' => $events, 'journals' => $journals, 'photos' => $photos, 'wishlists' => $wishlists]); } }
/* @var $form ActiveForm */ //var_dump($model->wishlists); die(); $this->title = 'Child Dashboard'; $this->params['breadcrumbs'][] = $this->title; ?> <!-- Content Header (Page header) --> <?php if (Yii::$app->user->identity->level != 0) { echo $this->render('_mood', ['model' => $moods]); ?> <div class="background-white top-fixed-margin bordered-grey padding-large"> <?php $count = (int) Yii::$app->find->setting('number_of_moods_a_day') - Mood::find()->where(['user_id' => Yii::$app->user->getId(), 'date' => date("Y-m-d")])->count(); $count == 1 ? $entry_label = "Entry" : ($entry_label = "Entries"); Pjax::begin(['id' => 'moodbox', 'class' => 'moodbox']); ?> <?php if ($count != (int) Yii::$app->find->setting('number_of_moods_a_day')) { ?> <?php echo GridView::widget(['dataProvider' => $moodsProvider, 'columns' => ['mood'], 'caption' => "<span class='label label-danger font-small'>" . $count . "</span>" . " " . "<span class='font-small color-bule'>" . $entry_label . " remaining today" . "</span>", 'options' => ['class' => 'moodbox-table'], 'emptyText' => '']); ?> <?php } ?> <?php Pjax::end(); ?>
<?php use yii\helpers\Html; use app\models\Mood; /* @var $this yii\web\View */ /* @var $model app\models\User */ /* @var $moods app\models\Mood */ $this->title = "Mood Summary - " . $model->fullname; $this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'Moods'), 'url' => ['index']]; $this->params['breadcrumbs'][] = $this->title; $last = Mood::find()->select('date')->where(['user_id' => $model->id])->orderBy(['date' => SORT_DESC])->one(); $mood = Mood::percentageMonthly($model->id, date("m", strtotime($last->date))); $monthly = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12']; $yearly = []; ?> <div class="row"> <div class="col-md-12 "> <label class="control-label">Select a month</label> <select id="date-range" name="date-range" class="form-control"> <option value="<?php echo intval(date('m')); ?> " data-year="<?php echo date('Y'); ?> ">Please Select</option> <?php //Find and display available moods in a drop down, by month of selected user foreach ($moods as $year => $months) { foreach ($monthly as $k => $m) { $yearly[$year][0][intval($k)] = isset($months[$m]) ? $months[$m]['sad'] : 0;
public static function getMoodsBetweenDates($lower, $upper, $user_id = null) { return Mood::find()->where(['and', 'date >= $lower', 'date <= $upper', ['user_id' => $user_id]])->all(); }
<?php use yii\helpers\Html; use yii\widgets\ActiveForm; use yii\helpers\ArrayHelper; use yii\widgets\Pjax; /* @var $this yii\web\View */ /* @var $model app\models\Mood */ /* @var $form yii\widgets\ActiveForm */ //var_dump(Yii::$app->find->setting('number_of_moods_a_day')); die(); $date = date("Y-m-d"); if (\app\models\Mood::find()->where(['user_id' => Yii::$app->user->getId(), 'date' => $date])->count() < (int) Yii::$app->find->setting('number_of_moods_a_day')) { ?> <div class="background-white top-fixed-margin bordered-grey padding-large"> <div class="row moodbox" id="secondmood"> <div class="mood-form"> <?php yii\widgets\Pjax::begin(['id' => 'new_mood']); ?> <?php $form = ActiveForm::begin(['action' => ['mood/create'], 'id' => $model->formName()]); ?> <?php echo $form->field($model, 'mood')->radioList(Yii::$app->params['moods'], array('prompt' => 'Select', 'size' => 5)); ?> <div class="form-group"> <?php echo Html::submitButton($model->isNewRecord ? 'Set Mood' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary', 'id' => 'submit_mood']); ?>