Как поставить объект в очередь до или после его сохранения в базе данных? - PullRequest
1 голос
/ 09 мая 2019

Я сейчас создаю систему управления очередью в ASP.NET MVC

1-й сценарий:
клиент перейдет к ноутбуку, введите свое имя и подтвердит получение номера очереди, после чего данные будут сохранены в базе данных.
Мой вопрос: как и где я поставлю их в очередь? чтобы я мог снять их позже, когда агент позвонит им?

KiosksController:

public static Queue<Queue> todayQueue = new Queue<Queue>();
public ActionResult SetQueueInfo([Bind(Include = "QueueId,Name,QueueNumber,ServiceId,ServiceName,ServiceLetter")] Queue queue, int? id)
        {
            if (ModelState.IsValid)
            {
                db.Queues.Add(queue);
                db.SaveChanges();
                return View(queue);
            }
            return View();
        }

2-й сценарий. Агент нажимает «Далее», после чего обслуживает следующего клиента «Первый на первом».
Как я могу удалить их из очереди? вот моя кнопка "Готово"

TellerScreenController

public static Queue<QueueTable> todayQueue;

    public ActionResult BtnNext()
    {
        var first = todayQueue.Dequeue();

        return RedirectToAction("Index");
    }

1 Ответ

1 голос
/ 09 мая 2019

У меня есть некоторые идеи относительно вашего требования.

Вам необходимо создать Queue (из пространства имен System.Collections) в качестве статической переменной.

Добавить два действия Reverse() и Reset()

Когда вы добавляете новый элемент, вы нажимаете в очередь и сохраняете в свою БД

Когда вы хотите обработать очередь, вы звоните Dequeue(), чтобы получить первый элемент из списка и удалить из очереди.

Поскольку вы используете статическую переменную для очереди, вам нужна поддержка метода сброса очереди для следующего резервирования.

private static Queue<QueueTable> todayQueue = new Queue<QueueTable>();

public ActionResult SetQueueInfo([Bind(Include = "QueueId,Name,QueueNumber,ServiceId,ServiceName,ServiceLetter")] QueueTable queue, int? id)
        {

            if (ModelState.IsValid)
            {
                todayQueue.Enqueue(queue);
                db.Queues.Add(queue);
                db.SaveChanges();
                return View(queue);
            }
            return View();
        }

        public ActionResult Reserve()
        {
            var first = todayQueue.Dequeue();

            // pass to view and handle it
            return View(first);
        }

        public ActionResult ResetQueue()
        {
            // reset queue after finish
            todayQueue = new Queue<QueueTable>();
        }

Отображение в cshtml

@model QueueTable

<p>@Model.QueueNumber</p>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...