Question

I'm just getting into mvc 4 (and mvc in general) and am just wondering is this action code ok or should it be stripped down again?

[HttpPost]
        public ActionResult Index(DashboardViewModel dbModel)
        {
            //retrieve latest resident order
            var residentOrder = db.ResidentOrders.GetById(dbModel.ResidentOrderID);

            if (residentOrder == null)
            {
                var order = db.Orders.GetById(dbModel.OrderID);

                var user = db.Users.GetUserByUsername(User.Identity.Name);

                residentOrder = new ResidentOrder()
                {
                    CreatedDate=DateTime.Now,
                    LastUpdateDate = DateTime.Now,
                    Litres=0,
                    Customer = user
                };

                order.ResidentOrders.Add(residentOrder);

                db.Commit();
            }

            //check to see if value has changed
            if (!dbModel.ResidentLitresOrdered.Equals(residentOrder.Litres))
            {
                //get new ordered value
                residentOrder.Litres = dbModel.ResidentLitresOrdered;

                db.Commit();

                //send an email just to notify in writing of the change.
                SendOwnOrderQtyUpdateNotification();
            }

            return View(dbModel);
        }

Basically if a resident order doesnt exist then we create one, this is the only place in the system where this would need to happen.

Should I still be stripping that code out into my repositories?

db is my IUnitOfWork btw

Was it helpful?

Solution

I would recommend that you create a "repository" to hide the details from the Controller action. An "Upsert" method would allow this to be clearly and elegantly implemented hiding the details from the controller.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top