public IActionResult UpdateContract(Contract contract, Contract original) { var CustomerItems = repository.CustomerList(); ViewData["CustomerItems"] = CustomerItems; /* * Für den Vertrag habe ich festgelegt das Sonderfälle berücksichtigt werden bei denen EK oder VK 0 Euro betragen. * Negative Werte für EK und VK sollen nicht erlaubt sein. In allen Fällen darf der EK nicht größer als VK sein. */ decimal PurchasePriceValue; decimal RetailPriceValue; DateTime startdateValue = new DateTime(); DateTime enddateValue = new DateTime(); if (ParseStringToDecimal(contract.StrPurchasePrice, out PurchasePriceValue)) { contract.PurchasePrice = PurchasePriceValue; } else { ModelState.AddModelError(nameof(contract.StrPurchasePrice), "Hier ist nur ein Zahlenwert erlaubt!"); } if (ParseStringToDecimal(contract.StrRetailPrice, out RetailPriceValue)) { contract.RetailPrice = RetailPriceValue; } else { ModelState.AddModelError(nameof(contract.StrRetailPrice), "Hier ist nur ein Zahlenwert erlaubt!"); } if (string.IsNullOrEmpty(contract.StrStartdate)) { ModelState.AddModelError(nameof(contract.StrStartdate), "Der Vertrag benötigt ein Startdatum!"); } else if (ParseStringToDate(contract.StrStartdate, out startdateValue)) { contract.Startdate = startdateValue; } else { ModelState.AddModelError(nameof(contract.StrStartdate), "Fehler: Datumsfeld (dd.mm.yyyy)"); } if (ParseStringToDate(contract.StrEnddate, out enddateValue)) { contract.Enddate = enddateValue; } else { ModelState.AddModelError(nameof(contract.StrEnddate), "Fehler: Datumsfeld (dd.mm.yyyy)"); } if (PurchasePriceValue < 0M) { ModelState.AddModelError(nameof(contract.StrPurchasePrice), "Einkaufspreis muss Null oder größer Null sein!"); } if (RetailPriceValue < 0M) { ModelState.AddModelError(nameof(contract.StrRetailPrice), "Verkaufspreis muss Null oder größer Null sein!"); } if (PurchasePriceValue > 0M && RetailPriceValue > 0M && PurchasePriceValue > RetailPriceValue) { ModelState.AddModelError(nameof(contract.StrPurchasePrice), "Einkaufspreis muss höher oder gleich dem Verkaufspreis sein!"); } if (startdateValue > enddateValue) { ModelState.AddModelError(nameof(contract.StrEnddate), "Endedatum muss nach dem Startdatum liegen!"); } if (ModelState.GetValidationState(nameof(contract.StrStartdate)) == ModelValidationState.Valid && ModelState.GetValidationState(nameof(contract.StrEnddate)) == ModelValidationState.Valid && ModelState.GetValidationState(nameof(contract.StrPurchasePrice)) == ModelValidationState.Valid && ModelState.GetValidationState(nameof(contract.StrRetailPrice)) == ModelValidationState.Valid) { if (contract.ContractId == 0) { repository.AddContract(contract); } else { repository.UpdateContract(contract, original); } return(RedirectToAction(nameof(Index))); } else { return(View("EditContract", original)); } }