public async Task <IActionResult> SetConsultancyStatusBydoctor([FromQuery] int chatId, [FromQuery] ConsultancyStatus status) { var result = await _consultancyService.SetConsultancyStatusAsync(CurrentUserName, chatId, status, RequestLang); return(Ok(result)); }
public async Task <ConsultantChatsDTO> SetConsultancyStatusAsync(string doctorUserMobile, int chatId, ConsultancyStatus status, Lang lang) { var doctorPerson = await _dbContext.Persons.FirstOrDefaultAsync(x => x.Mobile == doctorUserMobile); if (doctorPerson == null) { throw new AwroNoreException("Not any person found for this mobile number"); } var chat = await _dbContext.Consultancies.FindAsync(chatId); if (chat == null) { throw new AwroNoreException("This chat is no longer available"); } if (!doctorPerson.ServiceSupplies.Any(y => y.Id == chat.ServiceSupplyId)) { throw new AwroNoreException("You don't have permission to load this chat"); } chat.Status = status; if (status == ConsultancyStatus.STARTED) { chat.StartedAt = DateTime.Now; } if (status == ConsultancyStatus.FINISHED) { chat.FinishedAt = DateTime.Now; } _dbContext.Entry(chat).State = EntityState.Modified; await _dbContext.SaveChangesAsync(); return(new ConsultantChatsDTO { Id = chat.Id, PersonId = chat.PersonId, ServiceSupplyId = chat.ServiceSupplyId, FinishedAt = chat.FinishedAt != null?chat.FinishedAt.ToString() : "", StartedAt = chat.StartedAt != null?chat.StartedAt.ToString() : "", Status = chat.Status, PersonName = lang == Lang.KU ? chat.Person.FullName_Ku : lang == Lang.AR ? chat.Person.FullName_Ar : chat.Person.FullName, PersonAvatar = chat.Person.RealAvatar, LastMessage = chat.ConsultancyMessages.Any() ? chat.ConsultancyMessages.OrderByDescending(m => m.CreatedAt).FirstOrDefault().Content : "", }); }