public void RefillInfoFromExistingPatron(CheckOutItem patron_item_unit_thingy)
    {
        CancelButton.SetActive(true);
        SaveButton.SetActive(true);
        ItemSidePanel.SetActive(true);
        namePanel.SetActive(true);
        current_scanned_patron_barcode = PatronInputField.text;
        nameInputField.text            = patron_item_unit_thingy.patron_name;


        ItemInputField.Select();

        int item_counter = patron_item_unit_thingy.items.Length;

        for (int i = 0; i < item_counter; i++)
        {
            //add it into the view
            GameObject item_obj = Instantiate(item_prefab) as GameObject;
            item_obj.GetComponent <ItemBox>().SetBarcodeText(patron_item_unit_thingy.items[i]);
            //add item string into list
            current_scanned_items_list.Add(patron_item_unit_thingy.items[i]);
            item_obj.transform.SetParent(item_holder.content, false);
        }

        item_cart_label__with_counter.text = label_string + current_scanned_items_list.Count.ToString();
    }
示例#2
0
        public void Get_All_Success()
        {
            // Arrange
            CheckOutItem item = new CheckOutItem()
            {
                Id = "5c012842f8e2708cf041e247"
            };
            IEnumerable <CheckOutItem> items = new List <CheckOutItem>()
            {
                item
            };

            _checkOutServicesMock.Setup(x => x.GetCheckOutList()).Returns(Task.FromResult(items));

            // Act
            CheckOutController controller   = new CheckOutController(_checkOutServicesMock.Object, _eventBusMock.Object, _checkOutFlowValidMock.Object);
            ActionResult       actionResult = controller.Get().Result;

            // Assert.
            Assert.IsType <OkObjectResult>(actionResult);
            OkObjectResult actionResultType = actionResult as OkObjectResult;

            Assert.Equal(actionResultType.StatusCode, (int)System.Net.HttpStatusCode.OK);
            Assert.Equal(((List <CheckOutItem>)actionResultType.Value), ((List <CheckOutItem>)items.ToList()));
        }
示例#3
0
        public void Post_Success()
        {
            // Arrange
            CheckOutItem item = new CheckOutItem()
            {
                Id = ""
            };

            _checkOutServicesMock.Setup(x => x.AddCheckOut(item))
            .Verifiable();
            _checkOutFlowValidMock
            .Setup(x => x.IsValidOperation(BaseValidatorType.Create, It.IsAny <CheckOutItem>(), null))
            .Returns(true)
            .Verifiable();

            // Act
            CheckOutController controller   = new CheckOutController(_checkOutServicesMock.Object, _eventBusMock.Object, _checkOutFlowValidMock.Object);
            ActionResult       actionResult = controller.Post(item);

            // Assert.
            Assert.IsType <CreatedResult>(actionResult);
            CreatedResult actionResultType = actionResult as CreatedResult;

            Assert.Equal(actionResultType.StatusCode, (int)System.Net.HttpStatusCode.Created);
            _checkOutServicesMock.Verify();
            _checkOutFlowValidMock.Verify();
            _checkOutFlowValidMock.Verify();
        }
示例#4
0
        public void Delete_Success()
        {
            // Arrange
            CheckOutItem item = new CheckOutItem()
            {
                Id = "5c012842f8e2708cf041e247"
            };
            Acknowledged deleteResult = new Acknowledged(1);

            _checkOutServicesMock.Setup(x => x.GetCheckOut(item.Id)).Returns(Task.FromResult(item));
            _checkOutServicesMock.Setup(x => x.DeleteCheckOut(item.Id))
            .ReturnsAsync(deleteResult)
            .Verifiable();
            _checkOutFlowValidMock
            .Setup(x => x.IsValidOperation(BaseValidatorType.Delete, It.IsAny <CheckOutItem>(), null))
            .Returns(true)
            .Verifiable();

            // Act
            CheckOutController controller   = new CheckOutController(_checkOutServicesMock.Object, _eventBusMock.Object, _checkOutFlowValidMock.Object);
            ActionResult       actionResult = controller.Delete(item.Id);

            // Assert.
            Assert.IsType <NoContentResult>(actionResult);
            NoContentResult actionResultType = actionResult as NoContentResult;

            Assert.Equal(actionResultType.StatusCode, (int)System.Net.HttpStatusCode.NoContent);
            _checkOutServicesMock.Verify();
            _checkOutFlowValidMock.Verify();
        }
示例#5
0
        public void Put_FlowValidError()
        {
            // Arrange
            CheckOutItem item = new CheckOutItem()
            {
                Id = "5c012842f8e2708cf041e247"
            };

            _checkOutServicesMock.Setup(x => x.GetCheckOut(item.Id)).Returns(Task.FromResult(item));
            _checkOutFlowValidMock
            .Setup(x => x.IsValidOperation(BaseValidatorType.Update, It.IsAny <CheckOutItem>(), It.IsAny <CheckOutItem>()))
            .Returns(false)
            .Verifiable();

            // Act
            CheckOutController controller   = new CheckOutController(_checkOutServicesMock.Object, _eventBusMock.Object, _checkOutFlowValidMock.Object);
            ActionResult       actionResult = controller.Put(item);

            // Assert.
            Assert.IsType <BadRequestResult>(actionResult);
            BadRequestResult actionResultType = actionResult as BadRequestResult;

            Assert.Equal(actionResultType.StatusCode, (int)System.Net.HttpStatusCode.BadRequest);
            _checkOutServicesMock.Verify();
            _checkOutFlowValidMock.Verify();
        }
示例#6
0
        public async Task <bool> UpdateCheckOut(string id, CheckOutItem model)
        {
            if (!ObjectId.TryParse(model.Id, out ObjectId objectId))
            {
                return(false);
            }

            var filter = Builders <Model.CheckOutItem> .Filter.Eq("InternalId", objectId);

            var client = Collection().Find(filter).FirstOrDefaultAsync();

            if (client.Result == null)
            {
                return(false);
            }

            var objectUpdate = Builders <Model.CheckOutItem> .Update
                               .Set(x => x.CurrentState, model.CurrentState)
                               .Set(x => x.CashDeskSessionName, model.CashDeskSessionName)
                               .Set(x => x.Update, DateTime.Now);

            await Collection().UpdateOneAsync(filter, objectUpdate);

            return(true);
        }
示例#7
0
        public ActionResult Post([FromBody] CheckOutItem value)
        {
            // Validation.
            if ((value == null) ||
                (value.Id != string.Empty) ||
                (ModelState.IsValid == false))
            {
                return(BadRequest());
            }

            // Object Flow Validation.
            bool isObjectFlowValid = _iFlowValid.IsValidOperation(BaseValidatorType.Create, value, null);

            if (!isObjectFlowValid)
            {
                return(BadRequest());
            }

            // Add.
            _iCheckOutServices.AddCheckOut(value);

            // Event Bus Publish.
            if (value.CurrentState == CheckOutItem.STATE_CLOSED)
            {
                CheckOutEvent checkOutEvent = CheckOutEvent.FromItem(value);
                _iEventBus.Publish(checkOutEvent);
            }

            // Return.
            return(Created("GetCheckOut", value));
        }
示例#8
0
        public ActionResult DeleteConfirmed(long id)
        {
            CheckOutItem checkOutItem = db.CheckOutItems.Find(id);

            db.CheckOutItems.Remove(checkOutItem);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
示例#9
0
 public static CheckOutEvent FromItem(CheckOutItem _checkOutItem)
 {
     return(new CheckOutEvent()
     {
         CashDeskSessionName = _checkOutItem.CashDeskSessionName,
         CustomerId = _checkOutItem.CustomerId,
         AmountStore = _checkOutItem.AmountStore
     });
 }
    public void PatronScanned()
    {
        if (PatronInputField.text != current_scanned_patron_barcode && current_scanned_items_list.Count > 0)
        {
            ItemInputField.text = string.Empty;
            current_scanned_items_list.Clear();
            item_cart_label__with_counter.text = label_string + current_scanned_items_list.Count.ToString();

            ItemBox[] item_boxes = FindObjectsOfType <ItemBox>();
            if (item_boxes != null)
            {
                for (int i = 0; i < item_boxes.Length; i++)
                {
                    Destroy(item_boxes[i].gameObject);
                }
            }
        }



        if (PatronInputField.text.Length == patron_barcode_length)
        {
            //first check if we already have this number in the list
            CheckOutItem doesItExist = FindIfExisting(PatronInputField.text);
            if (doesItExist != null)
            {
                Debug.Log("need to recall this card numbers checked out items");
                DisplayMessage("Recalled patron from list");
                RefillInfoFromExistingPatron(doesItExist);
            }
            else
            {
                CancelButton.SetActive(true);
                SaveButton.SetActive(true);
                ItemSidePanel.SetActive(true);
                namePanel.SetActive(true);
                current_scanned_patron_barcode = PatronInputField.text;
                ClearMessage();

                if (!PatronInputField.text.StartsWith("21"))
                {
                    Debug.Log("trying to display warning in red");
                    DisplayMessage("<color=red>this may not be a valid number</color>");
                }

                ItemInputField.Select();
            }
        }
        else
        {
            if (!(PatronInputField.text.Length == 0))
            {
                DisplayMessage("Invalid patron barcode. Must be 14 digits.");
            }
        }
    }
示例#11
0
 public ActionResult Edit([Bind(Include = "Id,ItemId,Quantity,SellingPrice,IssueTo_StaffId,IssueDate")] CheckOutItem checkOutItem)
 {
     if (ModelState.IsValid)
     {
         db.Entry(checkOutItem).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.ItemId          = new SelectList(db.Items, "Id", "Name", checkOutItem.ItemId);
     ViewBag.IssueTo_StaffId = new SelectList(db.Staffs, "Id", "Name", checkOutItem.IssueTo_StaffId);
     return(View(checkOutItem));
 }
示例#12
0
        // GET: CheckOutItems/Details/5
        public ActionResult Details(long?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            CheckOutItem checkOutItem = db.CheckOutItems.Find(id);

            if (checkOutItem == null)
            {
                return(HttpNotFound());
            }
            return(View(checkOutItem));
        }
    public void SaveButtonAction()
    {
        PatronInputField.Select();

        CheckOutItem item = new CheckOutItem();

        item.patron_string = current_scanned_patron_barcode;
        item.items         = current_scanned_items_list.ToArray();
        item.patron_name   = nameInputField.text;

        Debug.Log("saving item: " + item.ToString() + "with this many check out items:  " + item.items.Length);
        GameController.GetInstance().AddCheckOutItem(item);

        CancelButtonAction();
    }
示例#14
0
        // GET: CheckOutItems/Edit/5
        public ActionResult Edit(long?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            CheckOutItem checkOutItem = db.CheckOutItems.Find(id);

            if (checkOutItem == null)
            {
                return(HttpNotFound());
            }
            ViewBag.ItemId          = new SelectList(db.Items, "Id", "Name", checkOutItem.ItemId);
            ViewBag.IssueTo_StaffId = new SelectList(db.Staffs, "Id", "Name", checkOutItem.IssueTo_StaffId);
            return(View(checkOutItem));
        }
示例#15
0
        public ActionResult Put([FromBody] CheckOutItem value)
        {
            // Validation.
            if ((value == null) ||
                (value.Id == string.Empty) ||
                (ModelState.IsValid == false))
            {
                return(BadRequest());
            }

            // Object Flow Validation.
            CheckOutItem checkOutItem = _iCheckOutServices.GetCheckOut(value.Id).Result;

            if (checkOutItem == null)
            {
                return(NotFound());
            }
            bool isObjectFlowValid = _iFlowValid.IsValidOperation(BaseValidatorType.Update, checkOutItem, value);

            if (!isObjectFlowValid)
            {
                return(BadRequest());
            }

            // Update.
            bool blnResultUpdate = _iCheckOutServices.UpdateCheckOut(value.Id, value).Result;

            // Return with case.
            if (blnResultUpdate)
            {
                // Event Bus Publish.
                if (value.CurrentState == CheckOutItem.STATE_CLOSED)
                {
                    CheckOutItem  checkOutItemUpdated = _iCheckOutServices.GetCheckOut(value.Id).Result;
                    CheckOutEvent checkOutEvent       = CheckOutEvent.FromItem(checkOutItemUpdated);
                    _iEventBus.Publish(checkOutEvent);
                }

                return(Accepted());
            }
            else
            {
                return(NotFound());
            }
        }
示例#16
0
        public void Put_ObjectIdEmpty()
        {
            // Arrange
            CheckOutItem item = new CheckOutItem()
            {
                Id = ""
            };

            // Act
            CheckOutController controller   = new CheckOutController(_checkOutServicesMock.Object, _eventBusMock.Object, _checkOutFlowValidMock.Object);
            ActionResult       actionResult = controller.Put(item);

            // Assert.
            Assert.IsType <BadRequestResult>(actionResult);
            BadRequestResult actionResultType = actionResult as BadRequestResult;

            Assert.Equal(actionResultType.StatusCode, (int)System.Net.HttpStatusCode.BadRequest);
        }
示例#17
0
        public ActionResult <CheckOutItem> Get(string id)
        {
            // Validation.
            if ((id == null) ||
                (id.Trim() == string.Empty))
            {
                return(BadRequest());
            }

            // Search Item.
            CheckOutItem checkOutItem = _iCheckOutServices.GetCheckOut(id).Result;

            if (checkOutItem == null)
            {
                return(NotFound());
            }

            // Return.
            return(Ok(checkOutItem));
        }
示例#18
0
        public void Get_Id_IdError()
        {
            // Arrange
            string       fakeId = "this_is_not_a_id";
            CheckOutItem item   = new CheckOutItem()
            {
                Id = "5c012842f8e2708cf041e247"
            };

            _checkOutServicesMock.Setup(x => x.GetCheckOut(item.Id)).Returns(Task.FromResult(item));

            // Act
            CheckOutController controller   = new CheckOutController(_checkOutServicesMock.Object, _eventBusMock.Object, _checkOutFlowValidMock.Object);
            ActionResult       actionResult = controller.Get(fakeId).Result;

            // Assert.
            Assert.IsType <NotFoundResult>(actionResult);
            NotFoundResult actionResultType = actionResult as NotFoundResult;

            Assert.Equal(actionResultType.StatusCode, (int)System.Net.HttpStatusCode.NotFound);
        }
示例#19
0
        public void Get_Id_Success()
        {
            // Arrange
            string       fakeId = "5c012842f8e2708cf041e247";
            CheckOutItem item   = new CheckOutItem()
            {
                Id = "5c012842f8e2708cf041e247"
            };

            _checkOutServicesMock.Setup(x => x.GetCheckOut(item.Id)).Returns(Task.FromResult(item));

            // Act
            CheckOutController controller   = new CheckOutController(_checkOutServicesMock.Object, _eventBusMock.Object, _checkOutFlowValidMock.Object);
            ActionResult       actionResult = controller.Get(fakeId).Result;

            // Assert.
            Assert.IsType <OkObjectResult>(actionResult);
            OkObjectResult actionResultType = actionResult as OkObjectResult;

            Assert.Equal(actionResultType.StatusCode, (int)System.Net.HttpStatusCode.OK);
            Assert.Equal(((CheckOutItem)actionResultType.Value), item);
        }
示例#20
0
    public void UpdateDisplayStuff(CheckOutItem item)
    {
        patron_number.text   = item.patron_string;
        patron_name_box.text = item.patron_name;

        string items_string_list = string.Empty;
        int    item_count        = item.items.Length;

        for (int i = 0; i < item_count; i++)
        {
            if (i > 0)
            {
                items_string_list += "\n";
            }

            items_string_list += item.items[i];
        }

        item_numbers_box.text      = items_string_list;
        index_indicator_label.text = "item " + (current_index_display + 1) + " of " + all_items_ref.Length;
        top_header_label.text      = "reading file - " + ReadACheckoutFileScreen.file_location;
    }
示例#21
0
        public ActionResult Delete(string id)
        {
            // Validation.
            if ((id == null) ||
                (id.Trim() == string.Empty))
            {
                return(BadRequest());
            }

            // Object Flow Validation.
            CheckOutItem checkOutItem = _iCheckOutServices.GetCheckOut(id).Result;

            if (checkOutItem == null)
            {
                return(NotFound());
            }
            bool isObjectFlowValid = _iFlowValid.IsValidOperation(BaseValidatorType.Delete, checkOutItem, null);

            if (!isObjectFlowValid)
            {
                return(BadRequest());
            }

            // Delete.
            MongoDB.Driver.DeleteResult clsDeleteResult = _iCheckOutServices.DeleteCheckOut(id).Result;

            // Return with case.
            if ((clsDeleteResult != null) &&
                (clsDeleteResult.IsAcknowledged) &&
                (clsDeleteResult.DeletedCount > 0))
            {
                return(NoContent());
            }
            else
            {
                return(NotFound());
            }
        }
示例#22
0
        public void Put_Success()
        {
            // Arrange
            CheckOutItem itemFrom = new CheckOutItem()
            {
                Id           = "5c012842f8e2708cf041e247",
                CurrentState = CheckOutItem.STATE_PAID
            };
            CheckOutItem itemTo = new CheckOutItem()
            {
                Id           = "5c012842f8e2708cf041e247",
                CurrentState = CheckOutItem.STATE_CLOSED
            };

            _checkOutServicesMock.Setup(x => x.GetCheckOut(itemFrom.Id)).Returns(Task.FromResult(itemFrom));
            _checkOutServicesMock.Setup(x => x.UpdateCheckOut(itemTo.Id, itemTo))
            .ReturnsAsync(true)
            .Verifiable();
            _checkOutFlowValidMock
            .Setup(x => x.IsValidOperation(BaseValidatorType.Update, It.IsAny <CheckOutItem>(), It.IsAny <CheckOutItem>()))
            .Returns(true)
            .Verifiable();

            // Act
            CheckOutController controller   = new CheckOutController(_checkOutServicesMock.Object, _eventBusMock.Object, _checkOutFlowValidMock.Object);
            ActionResult       actionResult = controller.Put(itemTo);

            // Assert.
            Assert.IsType <AcceptedResult>(actionResult);
            AcceptedResult actionResultType = actionResult as AcceptedResult;

            Assert.Equal(actionResultType.StatusCode, (int)System.Net.HttpStatusCode.Accepted);
            _checkOutServicesMock.Verify();
            _checkOutFlowValidMock.Verify();

            // Assert Bus.
            _eventBusMock.Verify(x => x.Publish(It.IsAny <CheckOutEvent>()));
        }
    public void AddCheckOutItem(CheckOutItem item)
    {
        //if it exists in list it may be saving with new item.items.
        //find it and delete it first
        for (int i = 0; i < check_out_items_list.Count; i++)
        {
            if (check_out_items_list[i].patron_string == item.patron_string)
            {
                check_out_items_list.Remove(check_out_items_list[i]);
            }
        }

        check_out_items_list.Add(item);


        string date_string = DateTime.Today.ToShortDateString();

        date_string = date_string.Replace('\\', '-');
        date_string = date_string.Replace('/', '-');
        string file_name_with_date = "checkout_list_" + date_string + ".json";

        SaveAllDataToJSONFile(file_name_with_date);
    }
        public ActionResult CheckOutItems()
        {
            double totalPrice = 0;

            List <CheckOutItem> liItems = new List <Models.CheckOutItem>();


            if (Session["cart"] != null && Session["count"] != null)
            {
                if (Convert.ToInt32(Session["count"]) == 1)
                {
                    ViewBag.Items = "1 Item";
                }
                else
                {
                    ViewBag.Items = Session["count"] + " Items";
                }

                for (int i = 0; i < Convert.ToInt32(Session["count"]); i++)
                {
                    List <Pizza> liPizza = (List <Pizza>)Session["cart"];
                    CheckOutItem item    = new CheckOutItem();
                    Pizza        pizza   = liPizza[i];

                    item.Details = pizza.Size + " Size pizza with " + pizza.Crust + " Crust," + pizza.Sauce + " and toppings " + getTopping(pizza);
                    item.Price   = getPrice(pizza.Size);
                    liItems.Add(item);
                    totalPrice += item.Price;
                }
            }


            ViewBag.TotalPrice    = totalPrice;
            Session["TotalPrice"] = totalPrice;
            return(View(liItems));
        }
示例#25
0
 public void AddCheckOut(CheckOutItem model)
 {
     Collection().InsertOne(model);
 }