public async Task <IActionResult> Remove([FromBody] DequeuePosition item) { if (item is null || item.ServiceType == ServiceType.none) { return(new BadRequestResult()); } DequeuePositionResult result = await _queueService.RemoveFromQueue(item); if (result is null) { return(new NoContentResult()); } var notification = new QueueNotification { StationNumber = item.StationNumber, UserNumber = result.CustomerNumberInQueue }; try { string groupName = item.ServiceType.ToString(); await _hubContext.Clients.Group(groupName).SendQueueNotificationToGroup(notification); } catch (Exception) { } return(new OkObjectResult(result)); }
public async Task <DequeuePositionResult> RemoveFromQueue(DequeuePosition item) { if (item is null) { throw new ArgumentNullException(nameof(item)); } try { QueueItem nextItem = await _repository.GetNextItem(item.ServiceType); if (nextItem is null) { return(null); } return(new DequeuePositionResult { CustomerID = nextItem.UserID, CustomerNumberInQueue = nextItem.UserNumber }); } catch (Exception e) { return(null); } }
public async Task <DequeuePositionResult> CallNextInQueueAsync(DequeuePosition request) { DequeuePositionResult result; switch (request.ServiceType) { case ServiceType.none: throw new ArgumentException("Argument is invalid"); case ServiceType.Pharmacist: result = await mockRepository.GetDequeuePositionPharmacy(request); break; case ServiceType.Nurse: result = await mockRepository.GetDequeuePositionNurse(request); break; default: throw new ArgumentException("Argument is not set"); } return(result); }
public Task <DequeuePositionResult> GetDequeuePositionPharmacy(DequeuePosition position) { var top = pharmacyQueueMock.First; pharmacyQueueMock.Remove(top); DequeuePositionResult result = new DequeuePositionResult() { CustomerID = top.Value.CustomerID, CustomerNumberInQueue = top.Value.CustomerNumberInQueue }; return(Task.FromResult(result)); }
/* * Call for the next client to the station */ public async Task <DequeuePositionResult> CallNextInQueueAsync(DequeuePosition request) { HttpRequestMessage httpRequest = new HttpRequestMessage(HttpMethod.Delete, $"{ConstantURI.queueServerURI}Queue"); httpRequest.Content = new StringContent(JsonConvert.SerializeObject(request), Encoding.UTF8, "application/json"); var response = await client.SendAsync(httpRequest); response.EnsureSuccessStatusCode(); var result = await response.Content.ReadAsAsync <DequeuePositionResult>(); return(result); }
async void ExecuteCallNextCommandAsync() { try { DequeuePosition dequeuePosition = new DequeuePosition() { ServiceType = Model.StationServiceType, StationNumber = Model.StationNumber }; DequeuePositionResult result = await http.CallNextInQueueAsync(dequeuePosition); if (result == null) { dialog.ShowMessage("There are no client wating for treatment"); return; } DequeueModel.CustomerId = result.CustomerID; DequeueModel.QueueuNumber = result.CustomerNumberInQueue; // Send last client as a treatment report if (DequeueModel.CustomerId > 0) { CustomerTreatment treatment = new CustomerTreatment() { CustomerId = DequeueModel.CustomerId, TreatingEmployeeId = Model.EmployeeId, DateOfTreatment = DateTime.Now }; await http.SendTreatmentReportAsync(treatment); } } catch (Exception e) { dialog.ShowMessage(e.Message); } }