Я понял очень серьезную проблему в своем приложении. Речь идет о функции проката. Что происходит, даже если заявитель уже нанят, если клиент нажимает кнопку «Отклонить» на странице предложений, статус меняется с «Утвержденный» на отклоненный.
Я думаю, что я должен что-то изменить в этой части:
public function approve_job_proposal($job_id, $provider_id, $proposal_id) { //updates job status to "Closed" when a proposal is already accepted/approved $data = array ( 'provider_id' => $provider_id, 'status' => "Awarded" ); $this->db->where('id', $job_id); $this->db->update('job', $data); $data = array ( 'status' => "Approved" ); $this->db->where('id', $proposal_id); $this->db->update('job_proposal', $data); } public function reject_job_proposal($job_id, $provider_id, $proposal_id) { //updates provider's job proposal to "Rejected" $data = array ( 'status' => "Rejected" ); $this->db->where('id', $proposal_id); $this->db->update('job_proposal', $data); }
Как отключить любую кнопку, если клиент уже нанял такого провайдера?
Заранее спасибо!
Вы можете проверить свою базу данных, чтобы убедиться, что предложение еще не принято с помощью чего-то в этом направлении. Если вы хотите сделать это для обоих экземпляров (принять и отклонить), возможно, вы можете перенести проверку на дополнительную функцию, которая проверяет, действительно ли предложение уже находится в состоянии «окончания» (т.е. «Принято» или «Отклонено»).
Дополнительным примером вашего метода reject_job_proposal
может быть …
public function reject_job_proposal ($job_id, $provider_id, $proposal_id) { $this->db->select('status'); $this->db->from('job_proposal'); $this->db->where('id', $proposal_id); $query = $this->db->get(); $result = $query->row(); if ($result->status === 'Accepted') { // Throw error message, eg 'Sorry, this job has been accepted!' return; } ... }