public void CreateFnol(BaseRequestIdDTO requestIdDTO)
        {
            var             request       = _db.chat_requests.Where(x => x.ID == requestIdDTO.RequestId).SingleOrDefault();
            StatusUpdateDTO adminResponse = new StatusUpdateDTO();

            if (!request.discarded)
            {
                request.fnol_created = true;
                SaveDBChanges();

                //TODO create fnol in db

                StatusUpdateDTO enduserResponse = new StatusUpdateDTO();
                enduserResponse.RequestId = request.ID;
                enduserResponse.Message   = "First notice of loss was created successfully.";
                Clients.Group(request.Requested_by).FnolCreatedMessage(enduserResponse);
                adminResponse.RequestId = request.ID;
                adminResponse.Success   = true;
                adminResponse.Message   = "First notice of loss was created successfully.";
            }
            else
            {
                adminResponse.RequestId = request.ID;
                adminResponse.Success   = false;
                adminResponse.Message   = "This chat was already discarded.";
            }

            Clients.Group(request.Accepted_by).FnolCreated(adminResponse);
        }
        public void DiscardMessage(BaseRequestIdDTO requestIdDTO)
        {
            StatusUpdateDTO adminResponse = new StatusUpdateDTO();
            var             requestId     = requestIdDTO.RequestId;
            var             request       = _db.chat_requests.Where(x => x.ID == requestId).SingleOrDefault();

            if (request.fnol_created.HasValue && request.fnol_created.Value == false)
            {
                request.discarded = true;
                SaveDBChanges();

                StatusUpdateDTO enduserResponse = new StatusUpdateDTO();
                enduserResponse.RequestId = request.ID;
                enduserResponse.Message   = "Your request has been discarded. First notice of loss is not created.";
                Clients.Group(request.Requested_by).DiscardedMessage(enduserResponse);
                adminResponse.RequestId = request.ID;
                adminResponse.Success   = true;
                adminResponse.Message   = "You discarded the request. First notice of loss is not created.";
            }
            else
            {
                adminResponse.RequestId = request.ID;
                adminResponse.Success   = false;
                adminResponse.Message   = "You can't discard this chat. First notice of loss was created.";
            }
            Clients.Group(request.Accepted_by).Discarded(adminResponse);
        }
        public void SendRequest()
        {
            var           username           = Context.User.Identity.Name;
            int           requestId          = 0;
            chat_requests listRequestsByUser = null;

            try
            {
                listRequestsByUser = _db.chat_requests.Where(x => x.Requested_by == username && x.Accepted == false).OrderByDescending(x => x.Datetime_request)?.FirstOrDefault();
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.ToString());
            }

            if (listRequestsByUser != null)
            {
                requestId = listRequestsByUser.ID;
            }
            else
            {
                var chatRequest = new chat_requests
                {
                    Requested_by = username,
                    fnol_created = false,
                    discarded    = false
                };

                try
                {
                    _db.chat_requests.Add(chatRequest);
                    SaveDBChanges();
                    requestId = chatRequest.ID;
                }
                catch (Exception ex)
                {
                    Debug.WriteLine($"Error adding/saving request to db: {ex.ToString()}");
                }
                finally
                {
                    Clients.Group("Admins").MessageRequest(GetActiveRequests());
                }
            }

            BaseRequestIdDTO requestIdDTO = new BaseRequestIdDTO();

            requestIdDTO.RequestId = requestId;
            Clients.Group(username).RequestId(requestIdDTO);
        }