public ActionResult CreateAssetsFromItemOrder(RequestWithSelectedOffersViewModel model)
        {
            var request = this.requestToAcquireItemService.GetById(model.Request.Id);

            //Set items are received in request' packing slip
            this.packingSlipService.SetReceived(request.PackingSlipId.Value, DateTime.Now);

            //Finish request if there aren't items which must be changed to assets
            if (model.GaveItems.Where(x => x.CreateAsset).Count() < 1)
            {
                this.requestToAcquireItemService.SetFinished(model.Request.Id);
                return(Redirect("/Home/Index"));
            }

            var items = request.Items;

            var viewModel = new List <AddAssetViewModel>();

            //Add gave items to viewmodel
            foreach (var item in model.GaveItems)
            {
                if (item.CreateAsset)
                {
                    var real = items.Where(x => x.Id == item.Id).FirstOrDefault();
                    for (int i = 0; i < request.CountSelectedItems.Where(x => x.Key == real.Id).FirstOrDefault().Give; i++)
                    {
                        viewModel.Add(new AddAssetViewModel
                        {
                            RequestId = model.Request.Id,
                            ItemId    = item.Id,
                            Item      = new ItemDetailsViewModel
                            {
                                Brand             = real.Brand,
                                DateOfManufacture = real.DateOfManufacture,
                                ItemModel         = real.Model,
                                Price             = real.Price.Value,
                                Producer          = real.Producer,
                                Currency          = real.Price.Currency.Code,
                            }
                        });
                    }
                }
            }
            return(View(viewModel));
        }
예제 #2
0
        public ActionResult Approve(RequestWithSelectedOffersViewModel model)
        {
            //Add approved items and count of approved items to request
            var elements   = model.SelectedOffers.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.AddApprovedCountItems(dictionary, model.Request.Id);

            //Set request is approved
            this.requestToAcquireItemService.SetApproved(model.Request.Id);

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

            //Create order packing slip
            var id = this.packingSlipService.Add(new PackingSlip
            {
                ToUserId = model.Request.From.Id
            });

            this.requestToAcquireItemService.AddPackingSlip(model.Request.Id, id);

            return(Redirect("/Orders/ItemOrder/GetAllRequestsForAproving"));
        }
예제 #3
0
        public ActionResult HistoryRequestAll(int id)
        {
            var request = this.requestToAcquireItemService.GetById(id);

            //Verify if request is from user organisation
            if (!this.IsMegaAdmin())
            {
                if (request.From.Site.OrganisationId != this.userService.GetUserOrganisationId(this.User.Identity.GetUserId()))
                {
                    return(Redirect("/Home/NotAuthorized"));
                }
            }


            var viewModel = new RequestWithSelectedOffersViewModel();

            viewModel.Request = new ViewItemAcquisitionRequestViewModel
            {
                DateOfSend = request.DateOfSend,
                From       = new ShortUserDetails
                {
                    FullName = (request.From.FirstName + request.From.SecondName + request.From.LastName) == "" ?
                               request.From.Email : request.From.FirstName + " " + request.From.SecondName + " " + request.From.LastName,
                    Id = request.From.Id
                },
                Id    = request.Id,
                Items = request.Items.ToList().ConvertAll(
                    x => new ItemViewModel
                {
                    Id    = x.Id,
                    Model = x.Model,
                    Brand = x.Brand
                }),
                IsFinished = request.Finished,
                SiteName   = request.ToUser != null ? request.ToUser.Site.Name : request.From.Site.Name,
                ForUser    = request.ToUser != null ? (request.From.FirstName != null) ?
                             request.From.FirstName + " " + request.From.SecondName + " " + request.From.LastName :
                             request.From.Email : null,
                PackingSlipId = request.PackingSlip != null ? request.PackingSlipId.Value : 0
            };

            viewModel.ApprovedOffers = request.Items.ToList().ConvertAll(
                x => new OfferItemViewModel
            {
                Brand          = x.Brand,
                Id             = x.Id,
                ItemModel      = x.Model,
                MotherId       = x.OrganisationId,
                MotherName     = x.Organisation.Name,
                Price          = x.Price.Value,
                Producer       = x.Producer,
                IsSelected     = false,
                IsRotatingItem = x.RotatingItem,
                Currency       = x.Price.Currency.Code,
                SelectedCount  = request.CountSelectedItems.Where(y => y.Key == x.Id).First().Approved
            });

            viewModel.SelectedOffers = request.Items.ToList().ConvertAll(
                x => new OfferItemViewModel
            {
                Brand          = x.Brand,
                Id             = x.Id,
                ItemModel      = x.Model,
                MotherId       = x.OrganisationId,
                MotherName     = x.Organisation.Name,
                Price          = x.Price.Value,
                Producer       = x.Producer,
                IsRotatingItem = x.RotatingItem,
                IsSelected     = false,
                Currency       = x.Price.Currency.Code,
                SelectedCount  = request.CountSelectedItems.Where(y => y.Key == x.Id).First().Want
            });

            viewModel.GaveItems = request.Items.ToList().ConvertAll(
                x => new OfferItemViewModel
            {
                Brand          = x.Brand,
                Id             = x.Id,
                ItemModel      = x.Model,
                MotherId       = x.OrganisationId,
                MotherName     = x.Organisation.Name,
                Price          = x.Price.Value,
                Producer       = x.Producer,
                IsRotatingItem = x.RotatingItem,
                IsSelected     = false,
                Currency       = x.Price.Currency.Code,
                SelectedCount  = request.CountSelectedItems.Where(y => y.Key == x.Id).First().Give,
                CurrencyCourse = this.exchangeService.GetRate(x.Price.CurrencyId, this.User.Identity.GetUserId())
            });

            viewModel.IsApproved  = request.IsApproved;
            viewModel.AreItemGave = request.AreItemsGave;
            if (request.Location != null)
            {
                viewModel.Request.LocationName = request.Location.Country + ", " + request.Location.Town
                                                 + ", " + request.Location.Street + ", " + request.Location.StreetNumber;
            }
            return(View("GetRequestForFinishingOrFinished", viewModel));
        }
예제 #4
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"));
        }