public ActionResult Apply(string NewAmountZones, string AddZones, string Type_zone,string Address) { ViewData["Apply"] = "Изменения прошли успешно"; ViewDataSelectList(""); Int32 AmountZones = 0; Int32 AddZone = 0; int ap = mp.parkingzone.Count(x =>x.type_parking.Name==Type_zone); type_parking name = mp.type_parking.Where(x => x.Name == Type_zone).FirstOrDefault(); //позже учесть если не исчез, т.е. не null if (NewAmountZones == null & AddZones == null) { ViewData["Apply"] = "Изменений не произошло."; return View(mp.parkingzone.ToList()); } if (NewAmountZones != null & AddZones == null) { try { AmountZones = Convert.ToInt32(NewAmountZones); if (AmountZones < 0) //|| AmountPlace == ap) { ViewData["Apply"] = "Неверный формат ввода. Значение должно быть положительным и целочисленным"; //+ отличаться от текущего количества мест в уровне."; return View(mp.parkingzone.ToList()); } } catch { ViewData["Apply"] = "Неверный формат ввода. Значение должно быть положительным и целочисленным"; //+ отличаться от текущего количества мест в уровне."; return View(mp.parkingzone.ToList()); } if (AmountZones <= ap) { //Если добавлять поле "Количество удаляемых мест из уровня, то в качестве параметра AmountPlace отсылать значение: ap-amount_delete_place //таким образом я как бы вновь получу новое количество мест, а это значит, что и номер последнего места. //ViewData["EditLevel"] = "Количество мест в уровне уменьшилось на " + Convert.ToString(ap-AmountPlace); //place dis = new place(); ViewData["Apply"] = "Функция обрезания количества уровней временно недоступна";//dis.Disable(id_location_level, AmountPlace, "Disabled"); return View(mp.parkingzone.ToList()); } else if (AmountZones > ap) { parkingzone lz = mp.parkingzone.OrderByDescending(x => x.Parking_zone).FirstOrDefault(); if (lz != null) { for (int i = lz.Parking_zone + 1; i <= (lz.Parking_zone+AmountZones-ap); i++) { parkingzone nl = new parkingzone(); nl.Parking_zone = i; nl.id_type = name.id_type; nl.Address = Address; mp.parkingzone.Add(nl); mp.SaveChanges(); } } else { //с единицы for (int i = 1; i <= AmountZones; i++) { parkingzone nl = new parkingzone(); nl.Parking_zone = i; nl.id_type = name.id_type; nl.Address = Address; mp.parkingzone.Add(nl); mp.SaveChanges(); } } } } else if (NewAmountZones == null & AddZones != null) { try { AddZone = Convert.ToInt32(AddZones); if (AddZone <= 0) { ViewData["Apply"] = "Неверный формат ввода. Значение должно быть больше нуля и целочисленным."; return View(mp.parkingzone.ToList()); } } catch { ViewData["Apply"] = "Неверный формат ввода. Значение должно быть больше нуля и целочисленным."; return View(mp.parkingzone.ToList()); } parkingzone lz = mp.parkingzone.OrderByDescending(x => x.Parking_zone).FirstOrDefault(); if (lz != null) { for (int i = lz.Parking_zone + 1; i <= lz.Parking_zone + AddZone; i++) { parkingzone nl = new parkingzone(); nl.Parking_zone = i; nl.id_type = name.id_type; nl.Address = Address; mp.parkingzone.Add(nl); mp.SaveChanges(); } } else { //с единицы for (int i = 1; i <= AddZone; i++) { parkingzone nl = new parkingzone(); nl.Parking_zone = i; nl.id_type = name.id_type; nl.Address = Address; mp.parkingzone.Add(nl); mp.SaveChanges(); } } } return View(mp.parkingzone.ToList()); }
public ActionResult Change_zone(parkingzone chpz, Int32 P_z, string Type_zone, string NewAmountLevels, string AddLevels, string Type_lev) { //В случае успеха можно вернуть // return RedirectToAction("ZonesLevelsPlaces", new { Value = "" }); parkingzone pz = mp.parkingzone.Where(x => x.Parking_zone == P_z).FirstOrDefault(); if (Type_zone != null) { if (ModelState.IsValid) { Int32 AmountLevels = 0; Int32 AddLevel = 0; int ap = mp.levelzone.Count(x =>x.Parking_zone== P_z & x.TypeLevel == Type_lev); if (pz.Address == chpz.Address & Type_zone == pz.type_parking.Name & NewAmountLevels == null & AddLevels == null) { ViewData["EditZone1"] = "Изменений не произошло."; } else { type_parking tp = mp.type_parking.Where(t => t.Name == Type_zone).FirstOrDefault(); pz.id_type = tp.id_type; pz.Address = chpz.Address; mp.Entry(pz).State = EntityState.Modified; mp.SaveChanges(); ViewData["EditZone1"] = "Информация о зоне обновлена."; } if (NewAmountLevels != null & AddLevels == null) { try { AmountLevels = Convert.ToInt32(NewAmountLevels); if (AmountLevels < 0) //|| AmountPlace == ap) { ViewData["EditZone2"] = "Неверный формат ввода. Значение должно быть положительным и целочисленным"; //+ отличаться от текущего количества мест в уровне."; } } catch { ViewData["EditZone2"] = "Неверный формат ввода. Значение должно быть положительным и целочисленным"; //+ отличаться от текущего количества мест в уровне."; } if (AmountLevels <= ap) { //Если добавлять поле "Количество удаляемых мест из уровня, то в качестве параметра AmountPlace отсылать значение: ap-amount_delete_place //таким образом я как бы вновь получу новое количество мест, а это значит, что и номер последнего места. //ViewData["EditLevel"] = "Количество мест в уровне уменьшилось на " + Convert.ToString(ap-AmountPlace); //place dis = new place(); ViewData["EditZone2"] = "Функция обрезания количества уровней временно недоступна";//dis.Disable(id_location_level, AmountPlace, "Disabled"); } else if (AmountLevels > ap) { levelzone lz = mp.levelzone.Where(x => x.TypeLevel == Type_lev & x.Parking_zone == P_z).OrderByDescending(x => x.Level).FirstOrDefault(); if (lz != null) { for (int i = lz.Level + 1; i <= AmountLevels; i++) { levelzone nl = new levelzone(); nl.Level = i; nl.Parking_zone = P_z; nl.TypeLevel = Type_lev; mp.levelzone.Add(nl); mp.SaveChanges(); } } else { //с единицы for (int i = 1; i <= AmountLevels; i++) { levelzone nl = new levelzone(); nl.Level = i; nl.Parking_zone = P_z; nl.TypeLevel = Type_lev; mp.levelzone.Add(nl); mp.SaveChanges(); } } /* place ad_pl = new place(); string message = ad_pl.AddPlace(id_location_level, AmountPlace - ap, Status, (long)ChTariffForPlaces); if (message != "") { ViewData["EditZone2"] = message; }*/ } } else if (NewAmountLevels == null & AddLevels != null) { try { AddLevel = Convert.ToInt32(AddLevels); if (AddLevel <= 0) { ViewData["EditZone2"] = "Неверный формат ввода. Значение должно быть больше нуля и целочисленным."; } } catch { ViewData["EditZone2"] = "Неверный формат ввода. Значение должно быть больше нуля и целочисленным."; } levelzone lz = mp.levelzone.Where(x => x.TypeLevel == Type_lev & x.Parking_zone == P_z).OrderByDescending(x => x.Level).FirstOrDefault(); if (lz != null) { for (int i = lz.Level + 1; i <= lz.Level + AddLevel; i++) { levelzone nl = new levelzone(); nl.Level = i; nl.Parking_zone = P_z; nl.TypeLevel = Type_lev; mp.levelzone.Add(nl); mp.SaveChanges(); } } else { //с единицы for (int i = 1; i <= AddLevel; i++) { levelzone nl = new levelzone(); nl.Level = i; nl.Parking_zone = P_z; nl.TypeLevel = Type_lev; mp.levelzone.Add(nl); mp.SaveChanges(); } } } } else { ViewDataSelectList(pz.type_parking.Name); return View(pz); } } else ViewData["EditZone1"] = "Не задан тип парковочной зоны!"; ViewDataSelectList(pz.type_parking.Name); return View(pz); }