Example #1
0
        /// <summary>
        /// Add a new request
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public int Add(RequestToAcquireItems model)
        {
            var request = this.context.RequestsToAcquireItems.Add(model);

            this.context.SaveChanges();

            return(request.Id);
        }
Example #2
0
        public ActionResult SendRequest(AddItemAcquisitionRequestViewModel model)
        {
            //Check are there selected items
            if (!ModelState.IsValid || model.Items.Count() == 0)
            {
                if (model != null || model.Items.Count() == 0)
                {
                    this.ModelState.AddModelError("", ItemOrderTr.PleaseSelectItems);
                }
                return(View(model));
            }

            //Create request
            var req = new RequestToAcquireItems
            {
                FromId     = this.User.Identity.GetUserId(),
                DateOfSend = DateTime.Now
            };

            if (model.SelectedLocation != null)
            {
                req.LocationId = model.SelectedLocation;
            }

            if (model.SelectedUser != null)
            {
                req.ToUserId = model.SelectedUser;
            }

            var requestId = this.requestToAcquireItemService.Add(req);

            //Add items to request
            this.requestToAcquireItemService.AddItemsToRequest(requestId,
                                                               model.Items.Select(x => x.Id).ToList());

            //Add count want items to request
            var dictionary = new Dictionary <int, int>();

            dictionary = model.Items.Select((element, index) => new { element = element.Id, index = element.Count })
                         .ToDictionary(ele => ele.element, ele => ele.index);

            this.requestToAcquireItemService.AddWantCountItems(dictionary, requestId);

            //Add event that is created a new item request
            this.eventService.AddForUserGroup(
                new Event
            {
                Content            = "There is a new request for items !",
                Date               = DateTime.Now,
                EventRelocationUrl = "/Orders/ItemOrder/GetAllRequestsForAproving"
            },
                "Approve order for item",
                this.userService.GetUserOrganisationId(this.User.Identity.GetUserId()));

            return(Redirect("/Orders/ItemOrder/SuccessfullySend"));
        }
Example #3
0
        public ActionResult GiveItems(RequestWithSelectedOffersViewModel model)
        {
            //Check if is there a Count field which value is not permissible
            foreach (var item in model.GaveItems)
            {
                if (item.SelectedCount > model.ApprovedOffers.Where(x => x.Id == item.Id).FirstOrDefault().SelectedCount)
                {
                    this.ModelState.AddModelError("", ItemOrderTr.PermissableError);
                    return(View("ViewApprovedRequest", model));
                }
            }

            var request = this.requestToAcquireItemService.GetById(model.Request.Id);

            //Check if all items are given
            bool allGiven = true;

            for (int i = 0; i < model.ApprovedOffers.Count; i++)
            {
                if (model.GaveItems[i].SelectedCount < model.ApprovedOffers[i].SelectedCount)
                {
                    allGiven = false;
                    break;
                }
            }
            //Create a new request for a items which are not given and these items must be given later
            if (!allGiven)
            {
                var newRequest = new RequestToAcquireItems();
                newRequest.DateOfSend = request.DateOfSend;
                newRequest.FromId     = request.FromId;
                newRequest.IsApproved = true;
                newRequest.LocationId = request.LocationId;
                newRequest.ToUserId   = request.ToUserId;

                var dictionaryWant = new Dictionary <int, int>();

                //Add approved offer to new request
                for (int i = 0; i < model.ApprovedOffers.Count; i++)
                {
                    if (model.ApprovedOffers[i].SelectedCount > model.GaveItems[i].SelectedCount)
                    {
                        dictionaryWant.Add(model.ApprovedOffers[i].Id, model.ApprovedOffers[i].SelectedCount - model.GaveItems[i].SelectedCount);
                    }
                }

                var id = this.requestToAcquireItemService.Add(newRequest);

                this.requestToAcquireItemService.AddItemsToRequest(id,
                                                                   dictionaryWant.Select(x => x.Key).ToList());

                //Create new packing slip for new request
                var psId = this.packingSlipService.Add(new PackingSlip
                {
                    ToUserId   = request.PackingSlip.ToUserId,
                    FromUserId = request.PackingSlip.FromUserId,
                });

                //Add count of want items
                this.requestToAcquireItemService.AddWantCountItems(dictionaryWant, id);

                //ADd count of approved items
                this.requestToAcquireItemService.AddApprovedCountItems(dictionaryWant, id);

                //Add packing slip
                this.requestToAcquireItemService.AddPackingSlip(id, psId);

                //Add message for new request
                this.requestToAcquireItemService.AddMessage(request.Id, "You will receive other items later !");
            }

            //Set asset are given and their count to request
            this.requestToAcquireItemService.SetAssetsGave(model.Request.Id);

            var elements   = model.GaveItems.Select(x => new { Key = x.Id, Value = x.SelectedCount }).ToList();
            var dictionary = new Dictionary <int, int>();

            foreach (var item in elements)
            {
                dictionary.Add(item.Key, item.Value);
            }
            this.requestToAcquireItemService.AddGaveCountItems(dictionary, model.Request.Id);

            foreach (var item in model.GaveItems)
            {
                for (int i = 0; i < item.SelectedCount; i++)
                {
                    this.itemService.ReduceItemQuantity(item.Id);
                }
            }

            //Add a new event that items are given
            var aEvent = new Event
            {
                UserId             = model.Request.From.Id,
                Content            = "You have a new request for finishing !",
                Date               = DateTime.Now,
                EventRelocationUrl = "/Orders/ItemOrder/RequestForFinishing"
            };

            this.eventService.Add(aEvent);

            //Set items are given and set from who is given in packing slip
            this.packingSlipService.SetGiven(
                this.requestToAcquireItemService.GetById(model.Request.Id).PackingSlipId.Value, DateTime.Now);

            this.packingSlipService.SetFromUser(
                this.requestToAcquireItemService.GetById(model.Request.Id).PackingSlipId.Value,
                this.User.Identity.GetUserId());

            return(Redirect("/Orders/ItemOrder/ViewApprovedRequests"));
        }