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