예제 #1
0
        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 : "",
            });
        }