public IActionResult Delete(EntityViewModel vm) { bool errorMessageSet = false; var userID = User.FindFirstValue(ClaimTypes.NameIdentifier); //Check for absorption vendor selection. if (vm.AbsorptionEntity.EntityID != 0) { //Make sure the user owns both the absorbed and absorbing vendors if (!_vendorRepository.UserOwnsVendor(vm.EntityOfInterest.EntityID, userID) || !_vendorRepository.UserOwnsVendor(vm.AbsorptionEntity.EntityID, userID)) { //TODO: Perhaps a more specific message to the user? return(NotFound()); } //Convert the VMVendors to DBVendors Vendor absorbedVendor = _vendorRepository.Get(vm.EntityOfInterest.EntityID, userID); Vendor absorbingVendor = _vendorRepository.Get(vm.AbsorptionEntity.EntityID, userID); //Ensure that the deleted vendor is not default. if (!absorbedVendor.IsDefault) { //Make sure the absorbing vendor and the deleting vendor are not the same. if (absorbedVendor.VendorID != absorbingVendor.VendorID) { //Update all transactions that currently point to the vendor being deleted to instead point to the absorbing vendor. _vendorRepository.Absorption(absorbedVendor.VendorID, absorbingVendor.VendorID, userID); //Delete the vendor to be deleted. _vendorRepository.Delete(absorbedVendor.VendorID); TempData["Message"] = "Vendor successfully deleted."; return(RedirectToAction("Index")); } SetErrorMessage(vm, "Vendor being deleted and vendor absorbing cannot be the same.", errorMessageSet); errorMessageSet = true; } SetErrorMessage(vm, "Deleting a default vendor is not allowed.", errorMessageSet); errorMessageSet = true; } SetErrorMessage(vm, "You must select a vendor to absorb transactions related to the vendor being deleted.", errorMessageSet); EntityViewModel failureStateVM = new EntityViewModel(); failureStateVM.EntityOfInterest = vm.EntityOfInterest; failureStateVM.VendorSelectList = failureStateVM.InitVendorSelectList(_vendorRepository, userID); return(View(failureStateVM)); }
public IActionResult Delete(int?id) { var userID = User.FindFirstValue(ClaimTypes.NameIdentifier); if (id == null) { return(BadRequest()); } //Confirm the user owns the vendor if (!_vendorRepository.UserOwnsVendor((int)id, userID)) { return(NotFound()); } //Get the vendor data Vendor vendorToDelete = _vendorRepository.Get((int)id, userID); //Don't allow users to delete a default vendor if (!vendorToDelete.IsDefault) { //Convert the DBVendor to a VMVendor EntityViewModel vm = new EntityViewModel(); vm.EntityOfInterest = new EntityViewModel.Entity { EntityID = vendorToDelete.VendorID, Name = vendorToDelete.Name, IsDisplayed = vendorToDelete.IsDisplayed }; //Instantiate an absorption VMVendor vm.AbsorptionEntity = new EntityViewModel.Entity(); //Fill the vendor select list with user owned vendors. vm.VendorSelectList = vm.InitVendorSelectList(_vendorRepository, userID); return(View(vm)); } TempData["BadMessage"] = "Deleting default vendor is not allowed."; return(RedirectToAction("Index")); }