首页 > 解决方案 > 在将对象保存到数据库之前或之后,我将如何将其排入队列?

问题描述

我现在正在 ASP.NET MVC 中创建队列管理系统

第一种情况:
客户会去笔记本电脑,输入他们的名字,然后确认接收队列号,然后数据将保存到数据库中。
我的问题是我将如何以及在哪里将它们排入队列?这样我可以稍后在代理调用它们时将它们出列?

信息亭控制器:

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();
        }

第二种情况,代理将单击下一步,然后它将为下一个客户提供先进先出的服务。
我怎样才能让他们出队?这是我的“完成”按钮

TellerScreenController

public static Queue<QueueTable> todayQueue;

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

        return RedirectToAction("Index");
    }

标签: c#asp.netasp.net-mvc

解决方案


我对你的要求有一些想法。

您需要创建一个Queue(来自 System.Collections 命名空间)作为静态变量。

添加两个动作Reverse()Reset()

当您添加新项目时,您推送到队列并保存到您的数据库

当你想处理队列时,你调用Dequeue()从列表中获取第一个项目也从队列中删除。

因为队列使用静态变量,所以需要支持方法 reset Queue for next reserve。

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>

推荐阅读