public ActionResult Approve(BaseRequestForAssetViewModel model)
        {
            //Add approved assets to request
            var elements = model.ApprovedAssets.Where(x => x.Selected).Select(x => x.Asset.InventoryNumber).ToList();

            this.requestForAssetService.AddApprovedAssets(model.Request.Id, elements);

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

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

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

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

            return(Redirect("/Orders/AssetOrder/GetAllRequestsForAproving"));
        }
        public ActionResult GiveItems(BaseRequestForAssetViewModel model)
        {
            //Set assets are given and add them to request
            this.requestForAssetService.SetAssetsGiven(model.Request.Id);

            var elements = model.GivenAssets.Where(x => x.Selected).Select(x => x.Asset.InventoryNumber).ToList();

            this.requestForAssetService.AddGivenAssets(model.Request.Id, elements);

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

            this.eventService.Add(aEvent);

            //Set assets are given in packing slip
            this.packingSlipService.SetGiven(
                this.requestForAssetService.GetById(model.Request.Id).PackingSlipId.Value, DateTime.Now);

            //Set from user in packing slip
            this.packingSlipService.SetFromUser(
                this.requestForAssetService.GetById(model.Request.Id).PackingSlipId.Value,
                this.User.Identity.GetUserId());

            return(Redirect("/Orders/AssetOrder/ViewApprovedRequests"));
        }
        public ActionResult HistoryRequestAll(int id)
        {
            var request = this.requestForAssetService.GetById(id);

            if (!this.IsMegaAdmin())
            {
                if (request.From.Site.OrganisationId != this.userService.GetUserOrganisationId(this.User.Identity.GetUserId()))
                {
                    return(Redirect("/Home/NotAuthorized"));
                }
            }
            var viewModel = new BaseRequestForAssetViewModel();

            //Set request data to viewmodel
            viewModel.Request = new RequestForAssetViewModel
            {
                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,
                PackingSlipId = request.PackingSlip != null ? request.PackingSlipId.Value : 0,
                IsFinished    = request.Finished
            };

            //Set want assets to viewmodel
            viewModel.WantAssets = request.Assets.ToList().ConvertAll(
                x => new RequestAssetViewModel
            {
                Asset = new AssetViewModel
                {
                    AssetModel      = x.Model,
                    Brand           = x.Brand,
                    InventoryNumber = x.InventoryNumber,
                    SiteName        = x.Site.Name,
                    Price           = x.Price.Value,
                    Currency        = x.Price.Currency.Code
                },
                Selected = true
            });

            //Set aproved asset to viewmodel
            viewModel.ApprovedAssets = request.ApprovedAssets.ToList().ConvertAll(
                x => new RequestAssetViewModel
            {
                Asset = new AssetViewModel
                {
                    AssetModel      = x.Model,
                    Brand           = x.Brand,
                    InventoryNumber = x.InventoryNumber,
                    SiteName        = x.Site.Name,
                    Price           = x.Price.Value,
                    Currency        = x.Price.Currency.Code
                },
                Selected = true
            });

            //Set givven aset to viewmodel
            viewModel.GivenAssets = request.GivenAssets.ToList().ConvertAll(
                x => new RequestAssetViewModel
            {
                Asset = new AssetViewModel
                {
                    AssetModel      = x.Model,
                    Brand           = x.Brand,
                    InventoryNumber = x.InventoryNumber,
                    SiteName        = x.Site.Name,
                    Price           = x.Price.Value,
                    Currency        = x.Price.Currency.Code,
                    CurrencyCourse  = this.exchangeService.GetRate(x.Price.CurrencyId, this.User.Identity.GetUserId())
                },
                Selected = true
            });

            viewModel.IsApproved  = request.IsApproved;
            viewModel.AreItemGave = request.AreAssetsGave;

            return(View("GetRequestForFinishingOrFinished", viewModel));
        }
        public ActionResult RequestForApproving(int id)
        {
            var request = this.requestForAssetService.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 BaseRequestForAssetViewModel();

            //Add request data to viewmodel
            viewModel.Request = new RequestForAssetViewModel
            {
                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
            };

            //Add want asset to viewmodel
            viewModel.WantAssets = request.Assets.ToList().ConvertAll(
                x => new RequestAssetViewModel
            {
                Asset = new AssetViewModel
                {
                    AssetModel      = x.Model,
                    Brand           = x.Brand,
                    InventoryNumber = x.InventoryNumber,
                    SiteName        = x.Site.Name,
                    Price           = x.Price.Value,
                    Currency        = x.Price.Currency.Code,
                    CurrencyCourse  = this.exchangeService.GetRate(x.Price.CurrencyId, this.User.Identity.GetUserId())
                },
                Selected = true
            });

            //Add approved asset to viewmodel
            viewModel.ApprovedAssets = request.Assets.ToList().ConvertAll(
                x => new RequestAssetViewModel
            {
                Asset = new AssetViewModel
                {
                    AssetModel      = x.Model,
                    Brand           = x.Brand,
                    InventoryNumber = x.InventoryNumber,
                    SiteName        = x.Site.Name,
                    Price           = x.Price.Value
                },
                Selected = true
            });

            return(View(viewModel));
        }