예제 #1
0
        private void UpdateState()
        {
            try {
                if (!dataProvider.ChairsDict.ContainsKey(ChID))
                {
                    Logging.ToLog("PageChair - отсутствует chid " + ChID + " в результате запроса DataProvider, пропуск обновления");
                    return;
                }

                DataProvider.ItemChair.StatusInfo statusInfo = dataProvider.ChairsDict[ChID].CurrentState;

                switch (statusInfo.Status)
                {
                case DataProvider.ItemChair.Status.Free:
                case DataProvider.ItemChair.Status.Invitation:
                case DataProvider.ItemChair.Status.Underway:
                case DataProvider.ItemChair.Status.Delayed:
                    IsReceptionConducted = true;
                    ShowReceptionIsConducted(statusInfo);
                    break;

                case DataProvider.ItemChair.Status.NotConducted:
                default:
                    IsReceptionConducted = false;
                    ShowReceptionIsNotConducted();
                    break;
                }
            } catch (Exception e) {
                Logging.ToLog(e.Message + Environment.NewLine + e.StackTrace);
            }
        }
예제 #2
0
        private void ShowReceptionIsConducted(DataProvider.ItemChair.StatusInfo statusInfo)
        {
            TextBlockNoEmployee.Visibility = statusInfo.employees.Count == 0 ? Visibility.Visible : Visibility.Hidden;
            StackPanelDoc.Visibility       = statusInfo.employees.Count == 1 ? Visibility.Visible : Visibility.Hidden;
            //StackPanelMultipleEmployees.Visibility = statusInfo.employees.Count > 1 ? Visibility.Visible : Visibility.Hidden;
            ViewBoxMultipleEmployees.Visibility = statusInfo.employees.Count > 1 ? Visibility.Visible : Visibility.Hidden;

            if (statusInfo.employees.Count == 1)
            {
                DataProvider.ItemChair.Employee employee = statusInfo.employees[0];
                TextBlockDepartment.Text       = employee.Department;
                TextBlockEmployeeName.Text     = employee.Name;
                TextBlockEmployeePosition.Text = employee.Position;
                TextBlockWorkingTime.Text      = "Приём ведётся с " + DataProvider.ClearTimeString(employee.WorkingTime);
                ImageEmployee.Source           = DataProvider.GetImageForDoctor(employee.Name);
            }
            else if (statusInfo.employees.Count > 1)
            {
                StackPanelMultipleEmployees.Children.Clear();
                TextBlockDepartment.Text = string.Empty;

                foreach (DataProvider.ItemChair.Employee employee in statusInfo.employees)
                {
                    if (!TextBlockDepartment.Text.Contains(employee.Department))
                    {
                        TextBlockDepartment.Text += employee.Department + ", ";
                    }

                    TextBlock textBlockDocName = new TextBlock {
                        Text                = employee.Name,
                        TextWrapping        = TextWrapping.Wrap,
                        FontFamily          = new FontFamily("Franklin Gothic Book"),
                        HorizontalAlignment = HorizontalAlignment.Center
                    };

                    TextBlock textBlockDocPosition = new TextBlock {
                        Text                = employee.Position,
                        TextWrapping        = TextWrapping.Wrap,
                        FontFamily          = new FontFamily("Franklin Gothic Book"),
                        Foreground          = new SolidColorBrush(Colors.Gray),
                        HorizontalAlignment = HorizontalAlignment.Center,
                        FontSize            = 30
                    };

                    TextBlock textBlockWorkingTime = new TextBlock {
                        Text                = "Приём ведётся с " + employee.WorkingTime,
                        TextWrapping        = TextWrapping.Wrap,
                        FontFamily          = new FontFamily("Franklin Gothic Book"),
                        FontSize            = 30,
                        Foreground          = new SolidColorBrush(Colors.Gray),
                        HorizontalAlignment = HorizontalAlignment.Center
                    };

                    if (!employee.Equals(statusInfo.employees.Last()))
                    {
                        textBlockWorkingTime.Margin = new Thickness(0, 0, 0, 10);
                    }

                    StackPanelMultipleEmployees.Children.Add(textBlockDocName);
                    StackPanelMultipleEmployees.Children.Add(textBlockDocPosition);
                    StackPanelMultipleEmployees.Children.Add(textBlockWorkingTime);
                }

                TextBlockDepartment.Text = TextBlockDepartment.Text.TrimEnd(new char[] { ',', ' ' });
            }

            string state = string.Empty;

            if (isLiveQueue)
            {
                state = "Приём ведётся в порядке живой очереди";
            }
            else
            {
                switch (statusInfo.Status)
                {
                case DataProvider.ItemChair.Status.Free:
                    state = "Кабинет свободен";
                    break;

                case DataProvider.ItemChair.Status.Invitation:
                    state = statusInfo.PatientToInviteName + "," + Environment.NewLine +
                            "Пройдите на приём";
                    break;

                case DataProvider.ItemChair.Status.Underway:
                    state = "Идет приём";
                    if (!string.IsNullOrEmpty(statusInfo.ReceptionTimeLeft))
                    {
                        state += Environment.NewLine +
                                 "Осталось " + statusInfo.ReceptionTimeLeft + " минут";
                    }
                    break;

                case DataProvider.ItemChair.Status.Delayed:
                    state = "Приём задерживается";
                    break;

                case DataProvider.ItemChair.Status.NotConducted:
                default:
                    break;
                }
            }

            TextBlockState.Text = state;

            GridReceptionIsNotConducted.Visibility = Visibility.Hidden;
            GridReceptionIsConducted.Visibility    = Visibility.Visible;
        }