/** * Updates an existing MeetingDetails model. * If update is successful, the browser will be redirected to the 'view' page. * @param integer $id * @return mixed */ public function actionUpdate($id) { $model = $this->findModel($id); $modelMeetingSchedules = $model->meetingSchedules; if ($model->load(Yii::$app->request->post())) { $oldIDs = ArrayHelper::map($modelMeetingSchedules, 'id', 'id'); $modelMeetingSchedules = Model::createMultiple(MeetingSchedules::classname(), $modelMeetingSchedules); Model::loadMultiple($modelMeetingSchedules, Yii::$app->request->post()); $deletedIDs = array_diff($oldIDs, array_filter(ArrayHelper::map($modelMeetingSchedules, 'id', 'id'))); // ajax validation if (Yii::$app->request->isAjax) { Yii::$app->response->format = Response::FORMAT_JSON; return ArrayHelper::merge(ActiveForm::validateMultiple($modelMeetingSchedules), ActiveForm::validate($model)); } $model->date = \DateTime::createFromFormat('m-d-Y', $model->date)->format('Y-m-d'); // validate all models $valid = $model->validate(); if ($valid) { $transaction = \Yii::$app->db->beginTransaction(); try { if ($flag = $model->save(false)) { if (!empty($deletedIDs)) { MeetingSchedules::deleteAll(['id' => $deletedIDs]); } foreach ($modelMeetingSchedules as $modelMeetingSchedule) { if (empty($modelMeetingSchedule->congress_id)) { $modelMeetingSchedule->meeting_id = $model->id; $modelMeetingSchedule->congress_id = $model->congress_id; $modelMeetingSchedule->isNewRecord = true; } if ($modelMeetingSchedule->attendee_id > 0 || $modelMeetingSchedule->ol_attendee_id > 0) { $flag = $modelMeetingSchedule->save(false); } } $postData = \Yii::$app->request->post(); $olAttendeeData = isset($postData['OlAttendees']) ? $postData['OlAttendees'] : []; foreach ($olAttendeeData as $olAttendeeInfo) { // print_r($olAttendeeInfo); if (!empty($olAttendeeInfo['name']) && (!isset($olAttendeeInfo['id']) || empty($olAttendeeInfo['id']))) { $olAttendeeModel = new \backend\models\OlAttendees(); $olAttendeeModel->user_type_id = 1; $parts = explode(" ", $olAttendeeInfo['name']); $lastname = array_pop($parts); $firstname = implode(" ", $parts); $olAttendeeModel->first_name = $firstname; $olAttendeeModel->last_name = $lastname; $olAttendeeModel->name = $olAttendeeInfo['name']; $olAttendeeModel->ol_bio = $olAttendeeInfo['ol_bio']; $olAttendeeModel->ol_phone_no = $olAttendeeInfo['ol_phone_no']; $olAttendeeModel->ol_email = $olAttendeeInfo['ol_email']; $olAttendeeModel->is_active = 1; $olAttendeeModel->isNewRecord = true; if ($olAttendeeModel->validate()) { if ($flag = $olAttendeeModel->save(false)) { $olAttendeeId = $olAttendeeModel->id; $meetingScheduleModel = new MeetingSchedules(); $meetingScheduleModel->meeting_id = $model->id; $meetingScheduleModel->congress_id = $model->congress_id; $meetingScheduleModel->ol_attendee_id = $olAttendeeId; $meetingScheduleModel->isNewRecord = true; $flag = $meetingScheduleModel->save(false); if (!$flag) { $transaction->rollBack(); break; } } } } } } if ($flag) { $transaction->commit(); return $this->redirect(['view', 'id' => $model->id]); } } catch (\Exception $e) { $transaction->rollBack(); } } } else { //Meeting date should be between congress start date and end date $congressDetail = CongressDetails::findOne($model->congress_id); $congressStartDate = \DateTime::createFromFormat('Y-m-d', $congressDetail->start_date)->format('m-d-Y'); $congressEndDate = \DateTime::createFromFormat('Y-m-d', $congressDetail->end_date)->format('m-d-Y'); return $this->render('update', ['model' => $model, 'modelMeetingSchedules' => empty($modelMeetingSchedules) ? [new MeetingSchedules()] : $modelMeetingSchedules, 'congressStartDate' => $congressStartDate, 'congressEndDate' => $congressEndDate]); } }
<li role="presentation"> <?php echo Html::a('Booths', ['booth/index', 'id' => $id]); ?> </li> </ul> <div class="bs-docs-example"> <?php echo GridView::widget(['dataProvider' => $dataProvider, 'columns' => [['attribute' => 'title', 'format' => 'raw', 'value' => function ($data) { return Html::a($data->title, ['view', 'id' => $data->id]); }], ['attribute' => 'date', 'format' => ['date', 'php:m/d/Y']], ['attribute' => 'start_time', 'value' => 'startTimeFormatted'], ['label' => 'End Time', 'attribute' => 'stop_time', 'value' => 'stopTimeFormatted'], 'location', ['label' => 'Type', 'attribute' => 'event_type', 'value' => 'eventType.type'], ['header' => 'OL Name', 'format' => 'raw', 'value' => function ($data) { if ($data->meetingSchedules) { $str = '<ul>'; foreach ($data->meetingSchedules as $request) { $chk = $request->ol_attendee_id; if ($chk != "") { $row = backend\models\OlAttendees::findOne($chk); $str .= '<li>' . $row->first_name . ' ' . $row->last_name . '</li>'; } } $str .= '</ul>'; return $str; } else { return "None"; } }], ['header' => 'Attendees', 'format' => 'raw', 'value' => function ($data) { if ($data->meetingSchedules) { $str = '<ul>'; foreach ($data->meetingSchedules as $request) { $chk = $request->attendee_id; if ($chk != "") { $row = backend\models\AmgenContactList::findOne($chk);