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)); }
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")); }
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)); }
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")); }