using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.AspNetCore.Mvc.ViewFeatures.Buffers; using Microsoft.CodeAnalysis; using Microsoft.Extensions.Options; using ODCWeb.DataAccess.Data; using ODCWeb.DataAccess.Repository.IRepository; using ODCWeb.Models; using ODCWeb.Models.ViewModels; using Syncfusion.EJ2.Diagrams; using Syncfusion.EJ2.Layouts; using System; using System.Drawing.Printing; using System.Dynamic; using System.Security.Cryptography; using System.Threading.Tasks; using System.Xml.Linq; namespace ODCWeb.Areas.Admin.Controllers { [Area("Admin")] /* [Authorize(Roles = "Admin")]*/ public class DataController : Controller { public static string old_action = "A"; public static string old_task = "T"; public static string old_property = "P"; public static string old_material = "M"; public static string old_floor = "F"; public static int? ttid = 0; public static int? mmid = 0; private readonly ApplicationDbContext _db; private readonly IUnitOfWork _unitOfWork; private readonly UserManager userManager; public DataController(ApplicationDbContext applicationDbContext, UserManager userManager, IUnitOfWork unitOfWork) { _db = applicationDbContext; _unitOfWork = unitOfWork; this.userManager = userManager; } [Authorize(Roles = "Admin")] public IActionResult FindWrongMaterialNames() { var location = new Uri($"{Request.Scheme}://{Request.Host}"); var url = location.AbsoluteUri; ViewBag.ReturnUrl = url; IEnumerable all_materials = _unitOfWork.DataMaterial.GetAll(); List wrong_materials = new List(); foreach(var item in all_materials) { if (item.Name.Substring(item.Name.Length-1,1) == " ") { wrong_materials.Add(item); } } return View(wrong_materials); } [Authorize(Roles = "Admin")] public IActionResult AddNewPropertyToModel() { IEnumerable tasks = _unitOfWork.Task.GetAll(); foreach(var item in tasks) { item.SDate = new DateOnly(2024, 8, 10); item.Duration = 25; _unitOfWork.Task.update(item); _unitOfWork.save(); } return RedirectToAction("GetTasks", "Data"); } /*public IActionResult FindWrongPropertyNames() { var location = new Uri($"{Request.Scheme}://{Request.Host}"); var url = location.AbsoluteUri; ViewBag.ReturnUrl = url; IEnumerable all_properties = _unitOfWork.DataProperty.GetAll(); List wrong_properties = new List(); foreach (var item in all_properties) { if (item.Name.Substring(item.Name.Length - 1, 1) == " ") { wrong_properties.Add(item); } } return View(wrong_properties); } public IActionResult FindWrongTaskNames() { var location = new Uri($"{Request.Scheme}://{Request.Host}"); var url = location.AbsoluteUri; ViewBag.ReturnUrl = url; IEnumerable all_tasks = _unitOfWork.DataTask.GetAll(); List wrong_tasks = new List(); foreach (var item in all_tasks) { if (item.Name.Substring(item.Name.Length - 1, 1) == " ") { wrong_tasks.Add(item); } } return View(wrong_tasks); } public IActionResult FindWrongActionNames() { var location = new Uri($"{Request.Scheme}://{Request.Host}"); var url = location.AbsoluteUri; ViewBag.ReturnUrl = url; IEnumerable all_actions = _unitOfWork.DataAction.GetAll(); List wrong_actions = new List(); foreach (var item in all_actions) { if (item.Name.Substring(item.Name.Length - 1, 1) == " ") { wrong_actions.Add(item); } } return View(wrong_actions); }*/ [Authorize(Roles = "Admin")] public IActionResult Index() { return View(); } [Authorize(Roles = "Admin")] [HttpGet] public IActionResult GetFloors() { List Floors = _unitOfWork.DataFloor.GetAll().ToList(); return View(Floors); } [Authorize(Roles = "Admin")] [HttpGet] public IActionResult GetFloorsApi() { List floors = _unitOfWork.DataFloor.GetAll().ToList(); return Json(new { data = floors }); } [Authorize(Roles = "Admin")] [HttpGet] public IActionResult GetActions() { List Actions = _unitOfWork.DataAction.GetAll().ToList(); return View(Actions); } [Authorize(Roles = "Admin")] [HttpGet] public IActionResult GetActionsApi() { List Actions = _unitOfWork.DataAction.GetAll().ToList(); return Json(new { data = Actions }); } [Authorize(Roles = "Admin")] [HttpGet] public IActionResult GetTasks() { List Tasks = _unitOfWork.DataTask.GetAll().ToList(); return View(Tasks); } [Authorize(Roles = "Admin")] [HttpGet] public IActionResult GetTasksApi() { List Tasks = _unitOfWork.DataTask.GetAll().ToList(); return Json(new { data = Tasks }); } [Authorize(Roles = "Admin")] [HttpGet] public IActionResult GetProperties() { List Properties = _unitOfWork.DataProperty.GetAll().ToList(); return View(Properties); } [Authorize(Roles = "Admin")] [HttpGet] public IActionResult GetPropertiesApi() { List Properties = _unitOfWork.DataProperty.GetAll().ToList(); return Json(new { data = Properties }); } [Authorize(Roles = "Admin")] [HttpGet] public IActionResult GetMaterials() { List Materials = _unitOfWork.DataMaterial.GetAll().ToList(); return View(Materials); } [Authorize(Roles = "Admin")] [HttpGet] public IActionResult GetMaterialsApi() { List Materials = _unitOfWork.DataMaterial.GetAll().ToList(); return Json(new { data = Materials }); } [Authorize(Roles = "Admin")] [HttpGet] public IActionResult AddAction() { DataAction action = new() { }; return View(action); } [Authorize(Roles = "Admin")] [HttpPost] public IActionResult AddAction(DataAction obj) { bool checker = false; if (ModelState.IsValid) { IEnumerable old = _unitOfWork.DataAction.GetAll(); foreach (var item in old) { if (item.Name == obj.Name) { checker = true; } } if (checker == false) { for (int b = 0; b < 2; b++) { if (obj.Name.Substring(obj.Name.Length - 1, 1) == " ") { obj.Name = obj.Name.Substring(0, obj.Name.Length - 1); } string last_c = obj.Name[obj.Name.Length - 1].ToString(); if (int.TryParse(last_c, out _) == true) { obj.Name = obj.Name + "."; } } //////////////// _unitOfWork.DataAction.Add(obj); _unitOfWork.save(); TempData["success"] = "Action Name added to record"; return RedirectToAction("GetActions", "Data"); } else { TempData["error"] = "Action Name already in the record"; return RedirectToAction("GetActions", "Data"); } } else { TempData["error"] = "Something Wrong"; return View(obj); } } [Authorize(Roles = "Admin")] [HttpGet] public IActionResult AddFloor() { DataFloor floor = new() { }; return View(floor); } [Authorize(Roles = "Admin")] [HttpPost] public IActionResult AddFloor(DataFloor obj) { bool checker = false; if (ModelState.IsValid) { IEnumerable old = _unitOfWork.DataFloor.GetAll(); foreach (var item in old) { if (item.Name == obj.Name) { checker = true; } } if (checker == false) { _unitOfWork.DataFloor.Add(obj); _unitOfWork.save(); TempData["success"] = "Floor Name added to record"; return RedirectToAction("GetFloors", "Data"); } else { TempData["error"] = "Floor Name already in the record"; return RedirectToAction("GetFloors", "Data"); } } else { TempData["error"] = "Something Wrong"; return View(obj); } } [Authorize(Roles = "Admin")] [HttpGet] public IActionResult AddTask() { DataTask task = new() { }; return View(task); } [Authorize(Roles = "Admin")] [HttpPost] public IActionResult AddTask(DataTask obj) { bool checker = false; if (ModelState.IsValid) { IEnumerable old = _unitOfWork.DataTask.GetAll(); foreach (var item in old) { if (item.Name == obj.Name) { checker = true; } } if (checker == false) { obj.Name = obj.Name.Replace("*", "").Replace("%", "").Replace("_", ""); for (int b = 0; b < 2; b++) { if (obj.Name.Substring(obj.Name.Length - 1, 1) == " ") { obj.Name = obj.Name.Substring(0, obj.Name.Length - 1); } string last_c = obj.Name[obj.Name.Length - 1].ToString(); if (int.TryParse(last_c, out _) == true) { obj.Name = obj.Name + "."; } } obj.MeasuredWorkPId = "0"; if (obj.Labor_Rate.HasValue && obj.Labor_Rate != null) { } else { obj.Labor_Rate = 0; } _unitOfWork.DataTask.Add(obj); _unitOfWork.save(); TempData["success"] = "Task Name added to record"; return RedirectToAction("GetTasks", "Data"); } else { TempData["error"] = "Task Name already in the record"; return RedirectToAction("GetTasks", "Data"); } } else { TempData["error"] = "Something Wrong"; return View(obj); } } [Authorize(Roles = "Admin")] [HttpGet] public IActionResult AddProperty() { DataProperty property = new() { }; return View(property); } [Authorize(Roles = "Admin")] [HttpPost] public IActionResult AddProperty(DataProperty obj) { bool checker = false; if (ModelState.IsValid) { IEnumerable old = _unitOfWork.DataProperty.GetAll(); foreach (var item in old) { if (item.Name == obj.Name) { checker = true; } } if (checker == false) { for (int b = 0; b < 2; b++) { if (obj.Name.Substring(obj.Name.Length - 1, 1) == " ") { obj.Name = obj.Name.Substring(0, obj.Name.Length - 1); } } _unitOfWork.DataProperty.Add(obj); _unitOfWork.save(); TempData["success"] = "Property Name added to record"; return RedirectToAction("GetProperties", "Data"); } else { TempData["error"] = "Property Name already in the record"; return RedirectToAction("GetProperties", "Data"); } } else { TempData["error"] = "Something Wrong"; return View(obj); } } [Authorize(Roles = "Admin")] [HttpGet] public IActionResult AddMaterial() { DataMaterial material = new() { }; return View(material); } [Authorize(Roles = "Admin")] [HttpPost] public IActionResult AddMaterial(DataMaterial obj) { bool checker = false; if (ModelState.IsValid) { IEnumerable old = _unitOfWork.DataMaterial.GetAll(); foreach (var item in old) { if (item.Name == obj.Name) { checker = true; } } if (checker == false) { if (obj.Unit_Cost == null || double.TryParse(obj.Unit_Cost.ToString(), out _) == false) { obj.Unit_Cost = 0; } for (int b = 0; b < 2; b++) { if (obj.Name.Substring(obj.Name.Length - 1, 1) == " ") { obj.Name = obj.Name.Substring(0, obj.Name.Length - 1); } } _unitOfWork.DataMaterial.Add(obj); _unitOfWork.save(); TempData["success"] = "Material Name added to record"; return RedirectToAction("GetMaterials", "Data"); } else { TempData["error"] = "Material Name already in the record"; return RedirectToAction("GetMaterials", "Data"); } } else { TempData["error"] = "Something Wrong"; return View(obj); } } [Authorize(Roles = "Admin")] [HttpGet] public IActionResult EditAction(int? id) { DataAction action = _unitOfWork.DataAction.Get(u => u.DataActionId == id); old_action = action.Name; return View(action); } [Authorize(Roles = "Admin")] [HttpPost] public IActionResult EditAction(DataAction obj) { if (ModelState.IsValid) { List actions = new List(); IEnumerable all_actions = _unitOfWork.Action.GetAll(); foreach (var item in all_actions) { string last_cc = item.Name[item.Name.Length - 1].ToString(); if (int.TryParse(last_cc, out _) == true) { if (old_action == item.Name.Substring(0, item.Name.Length - 2)) { actions.Add(item); } } else { if (old_action == item.Name) { actions.Add(item); } } } string last_c = obj.Name[obj.Name.Length - 1].ToString(); if (int.TryParse(last_c, out _) == true) { obj.Name = obj.Name + "."; } _unitOfWork.DataAction.update(obj); _unitOfWork.save(); if (actions != null) { foreach (var item in actions) { string last_cct = item.Name[item.Name.Length - 1].ToString(); if (int.TryParse(last_cct, out _) == true) { int start = item.Name.Length - 2; item.Name = obj.Name + item.Name.Substring(start, 2); } else { item.Name = obj.Name; } _unitOfWork.Action.update(item); _unitOfWork.save(); } } //////template action List t_actions = new List(); IEnumerable t_all_actions = _unitOfWork.TemplateAction.GetAll(); foreach (var item in t_all_actions) { string last_ct = item.Name[item.Name.Length - 1].ToString(); if (int.TryParse(last_ct, out _) == true) { if (old_action == item.Name.Substring(0, item.Name.Length - 2)) { t_actions.Add(item); } } else { if (old_action == item.Name) { t_actions.Add(item); } } } if (t_actions != null) { foreach (var item in t_actions) { string last_cc = item.Name[item.Name.Length - 1].ToString(); if (int.TryParse(last_cc, out _) == true) { int start = item.Name.Length - 2; item.Name = obj.Name + item.Name.Substring(start, 2); } else { item.Name = obj.Name; } _unitOfWork.TemplateAction.update(item); _unitOfWork.save(); } } ///////////////////// old_action = "A"; TempData["success"] = "Action Name updated successfully"; return RedirectToAction("GetActions", "Data"); } else { TempData["error"] = "Something Wrong"; return View(obj); } } [Authorize(Roles = "Admin")] [HttpGet] public IActionResult EditFloor(int? id) { DataFloor floor = _unitOfWork.DataFloor.Get(u => u.DataFloorId == id); old_floor = floor.Name; return View(floor); } [Authorize(Roles = "Admin")] [HttpPost] public IActionResult EditFloor(DataFloor obj) { if (ModelState.IsValid) { IEnumerable floors = _unitOfWork.Floor.Where(u => u.Name == old_floor); _unitOfWork.DataFloor.update(obj); _unitOfWork.save(); if (floors != null) { foreach (var item in floors) { item.Name = obj.Name; _unitOfWork.Floor.update(item); _unitOfWork.save(); } } old_floor = "A"; TempData["success"] = "Floor Name updated successfully"; return RedirectToAction("GetFloors", "Data"); } else { TempData["error"] = "Something Wrong"; return View(obj); } } [Authorize(Roles = "Admin")] [HttpGet] public IActionResult EditTask(int? id) { DataTask task = _unitOfWork.DataTask.Get(u => u.DataTaskId == id); old_task = task.Name; IEnumerable properties = _unitOfWork.TemplateProperty.Where(u => u.DataTaskId == id); ViewBag.TProperties = properties; return View(task); } [Authorize(Roles = "Admin")] [HttpPost] public IActionResult EditTask(DataTask obj) { if (ModelState.IsValid) { List tasks = new List(); IEnumerable all_tasks = _unitOfWork.Task.GetAll(); foreach (var item in all_tasks) { string last_cc = item.Name[item.Name.Length - 1].ToString(); if (int.TryParse(last_cc, out _) == true) { if (old_task == item.Name.Substring(0, item.Name.Length - 2)) { tasks.Add(item); } } else { if (old_task == item.Name) { tasks.Add(item); } } } /* IEnumerable tasks = _unitOfWork.Task.Where(u => u.Name == old_task);*/ string last_c = obj.Name[obj.Name.Length - 1].ToString(); if (int.TryParse(last_c, out _) == true) { obj.Name = obj.Name + "."; } _unitOfWork.DataTask.update(obj); _unitOfWork.save(); if (tasks != null) { foreach (var item in tasks) { string last_cc = item.Name[item.Name.Length - 1].ToString(); if (int.TryParse(last_cc, out _) == true) { int start = item.Name.Length - 2; item.Name = obj.Name + item.Name.Substring(start,2); item.Labor_Rate = obj.Labor_Rate.HasValue ? (double)obj.Labor_Rate : 0; item.Labor_Cost = item.Labor_Rate * item.Measured_Work; item.Mat_Lab = item.Labor_Cost + item.Material_Cost; } else { item.Labor_Rate = obj.Labor_Rate.HasValue ? (double)obj.Labor_Rate : 0; item.Labor_Cost = item.Labor_Rate * item.Measured_Work; item.Mat_Lab = item.Labor_Cost + item.Material_Cost; item.Name = obj.Name; } _unitOfWork.Task.update(item); _unitOfWork.save(); } } List t_tasks = new List(); List o_tasks = _unitOfWork.TemplateTask.GetAll().ToList(); ////////////// foreach (var item in o_tasks) { string last_ct = item.Name[item.Name.Length - 1].ToString(); if (int.TryParse(last_ct, out _) == true) { if (old_task == item.Name.Substring(0, item.Name.Length - 2)) { t_tasks.Add(item); } } else { if (old_task == item.Name) { t_tasks.Add(item); } } } if (t_tasks != null) { foreach (var item in t_tasks) { string last_cc = item.Name[item.Name.Length - 1].ToString(); if (int.TryParse(last_cc, out _) == true) { int start = item.Name.Length - 2; item.Name = obj.Name + item.Name.Substring(start, 2); } else { item.Name = obj.Name; } _unitOfWork.TemplateTask.update(item); _unitOfWork.save(); } } ////////////// old_task = "T"; TempData["success"] = "Task Name updated successfully"; return RedirectToAction("GetTasks", "Data"); } else { TempData["error"] = "Something Wrong"; return View(obj); } } [Authorize(Roles = "Admin")] [HttpGet] public IActionResult ManageBQVariants(int id) { DataTask task = _unitOfWork.DataTask .Get(u => u.DataTaskId == id, includeProperties: "BQVariants"); if (task == null) { return NotFound(); } IEnumerable properties = _unitOfWork.TemplateProperty.Where(u => u.DataTaskId == id); ViewBag.TProperties = properties; // Add all DataTasks for the lookup tool ViewBag.AllDataTasks = _unitOfWork.DataTask.GetAll(); return View(task); } [Authorize(Roles = "Admin")] [HttpGet] public IActionResult GetTaskProperties(int taskId) { var dataTask = _unitOfWork.DataTask.Get(u => u.DataTaskId == taskId); if (dataTask == null) { return NotFound(); } var properties = _unitOfWork.TemplateProperty.Where(u => u.DataTaskId == taskId).ToList(); return Json(properties); } [Authorize(Roles = "Admin")] [HttpPost] public IActionResult SaveBQVariants([FromBody] List variants) { if (variants == null || !variants.Any()) { return BadRequest("No variants provided"); } try { int dataTaskId = variants.First().DataTaskId; // Get existing variants var existingVariants = _unitOfWork.BQTaskVariant .Where(v => v.DataTaskId == dataTaskId) .ToList(); // Remove variants that are not in the new list foreach (var existing in existingVariants) { bool found = false; foreach (var newVariant in variants) { if (newVariant.BQTaskVariantId.ToString() == existing.BQTaskVariantId.ToString() && existing.BQTaskVariantId != 0) { found = true; break; } } if (!found) { _unitOfWork.BQTaskVariant.Remove(existing); } } // Add or update variants foreach (var variant in variants) { if (variant.BQTaskVariantId == 0) { // New variant _unitOfWork.BQTaskVariant.Add(variant); } else { // Update existing variant var existingVariant = existingVariants.FirstOrDefault(v => v.BQTaskVariantId.ToString() == variant.BQTaskVariantId.ToString()); if (existingVariant != null) { existingVariant.BQTaskName = variant.BQTaskName; existingVariant.BQPropertyId = variant.BQPropertyId; existingVariant.BQRate = variant.BQRate; _unitOfWork.BQTaskVariant.update(existingVariant); } } } _unitOfWork.save(); return Ok(); } catch (Exception ex) { return BadRequest(ex.Message); } } [Authorize(Roles = "Admin")] [HttpGet] public IActionResult EditProperty(int? id) { DataProperty property = _unitOfWork.DataProperty.Get(u => u.DataPropertyId == id); old_property = property.Name; return View(property); } [Authorize(Roles = "Admin")] [HttpPost] public IActionResult EditProperty(DataProperty obj) { if (ModelState.IsValid) { _unitOfWork.DataProperty.update(obj); _unitOfWork.save(); IEnumerable properties = _unitOfWork.Property.Where(u => u.Name == old_property); if (properties != null) { foreach (var item in properties) { item.Name = obj.Name; ; _unitOfWork.Property.Update(item); _unitOfWork.save(); } } IEnumerable tproperties = _unitOfWork.TemplateProperty.Where(u => u.Name == old_property); if (tproperties != null) { foreach (var item in tproperties) { item.Name = obj.Name; _unitOfWork.TemplateProperty.update(item); _unitOfWork.save(); } } old_property = "P"; TempData["success"] = "Property Name updated successfully"; return RedirectToAction("GetProperties", "Data"); } else { TempData["error"] = "Something Wrong"; return View(obj); } } [Authorize(Roles = "Admin")] [HttpGet] public IActionResult EditMaterial(int? id) { DataMaterial material = _unitOfWork.DataMaterial.Get(u => u.DataMaterialId == id); old_material = material.Name; return View(material); } [Authorize(Roles = "Admin")] [HttpPost] public IActionResult EditMaterial(DataMaterial obj) { if (ModelState.IsValid) { IEnumerable materials = _unitOfWork.Material.Where(u => u.Name == old_material); _unitOfWork.DataMaterial.update(obj); _unitOfWork.save(); if (materials != null) { foreach (var item in materials) { item.Name = obj.Name; item.Unit_Cost = obj.Unit_Cost; _unitOfWork.Material.update(item); _unitOfWork.save(); } } IEnumerable tmaterials = _unitOfWork.TemplateMaterial.Where(u => u.Name == old_material); if (tmaterials != null) { foreach (var item in tmaterials) { item.Name = obj.Name; _unitOfWork.TemplateMaterial.update(item); _unitOfWork.save(); } } old_material = "M"; TempData["success"] = "Material Name updated successfully"; return RedirectToAction("GetMaterials", "Data"); } else { TempData["error"] = "Something Wrong"; return View(obj); } } [Authorize(Roles = "Admin")] [HttpGet] public IActionResult EditTProperty(int? id) { TemplateProperty tproperty = _unitOfWork.TemplateProperty.Get(u => u.TemplatePId == id); return View(tproperty); } [Authorize(Roles = "Admin")] [HttpPost] public IActionResult EditTProperty(TemplateProperty obj) { if (ModelState.IsValid) { _unitOfWork.TemplateProperty.update(obj); _unitOfWork.save(); List properties = _unitOfWork.Property.Where(u => u.Name == obj.Name).ToList(); if (properties != null) { foreach (var item in properties) { item.Visible = obj.Visible; _unitOfWork.Property.Update(item); _unitOfWork.save(); } } TempData["success"] = "Template Property updated successfully"; return RedirectToAction("DTaskDetails", "Data", new { id = obj.DataTaskId }); } else { TempData["error"] = "Something Wrong"; return View(obj); } } [Authorize(Roles = "Admin")] [HttpGet] public IActionResult DTaskDetails(int? id) { DataTask task = _unitOfWork.DataTask.Get(u => u.DataTaskId == id); if (task == null) { TempData["error"] = "No Data Task found!"; return RedirectToAction("GetTasks"); } else { ViewBag.Task = task.Name; ViewBag.Id = id; List materials = _unitOfWork.TemplateMaterial.Where(u => u.DataTaskId == id).ToList(); List properties = _unitOfWork.TemplateProperty.Where(u => u.DataTaskId == id).ToList(); dynamic mymodel = new ExpandoObject(); mymodel.properties = properties; mymodel.materials = materials; return View(mymodel); } } [Authorize(Roles = "Admin")] [HttpGet] public IActionResult AddTProperty(int? id) { ViewBag.Id = id; TemplateProperty tproperty = new() { }; IEnumerable PropertyList = _unitOfWork.DataProperty.GetAll(); List properties = new List(); foreach (var item in PropertyList) { properties.Add(item.Name); } ViewBag.PropertyList = properties; return View(tproperty); } [Authorize(Roles = "Admin")] [HttpPost] public IActionResult AddTProperty(TemplateProperty obj) { if (ModelState.IsValid) { bool checker = false; IEnumerable properties = _unitOfWork.TemplateProperty.Where(u => u.Name == obj.Name); if (properties != null) { foreach(var item in properties) { if (item.DataTaskId == obj.DataTaskId) { checker = true; } } } if (checker == true) { TempData["error"] = "Property already present"; } else { _unitOfWork.TemplateProperty.Add(obj); _unitOfWork.save(); TempData["success"] = "Property Added successfully"; } return RedirectToAction("DTaskDetails", "Data", new { id = obj.DataTaskId }); } else { TempData["error"] = "Something Wrong!"; return View(obj); } } [Authorize(Roles = "Admin")] public IActionResult DeleteTProperty(int? id) { TemplateProperty tproperty = _unitOfWork.TemplateProperty.Get(u => u.TemplatePId == id); int temp = tproperty.DataTaskId; ///////////////////////Remove from original project///// DataTask task = _unitOfWork.DataTask.Get(u => u.DataTaskId == temp); if (task != null) { IEnumerable tasks = _unitOfWork.Task.Where(u => u.Name == task.Name); if (tasks != null) { foreach (var itemh in tasks) { IEnumerable propertiesh = _unitOfWork.Property.Where(u => u.TaskId == itemh.TaskId); if (propertiesh != null) { Property dproperty = propertiesh.FirstOrDefault(u => u.Name == tproperty.Name); _unitOfWork.Property.Remove(dproperty); _unitOfWork.save(); } } } } //////////////////////////////////////////////////////// TemplateFormulaP formulaP = _unitOfWork.TemplateFormulaP.Get(u => u.TemplatePId == tproperty.TemplatePId); if (formulaP != null) { _unitOfWork.TemplateFormulaP.Remove(formulaP); _unitOfWork.save(); } _unitOfWork.TemplateProperty.Remove(tproperty); _unitOfWork.save(); TempData["success"] = "Property Deleted successfully"; return RedirectToAction("DTaskDetails", "Data", new { id = temp }); } [Authorize(Roles = "Admin")] [HttpGet] public IActionResult DeleteFloor(int? id) { DataFloor floor = _unitOfWork.DataFloor.Get(u => u.DataFloorId == id); if (floor != null) { return View(floor); } else { TempData["error"] = "Not Found!"; return RedirectToAction("GetFloors", "Data"); } } [Authorize(Roles = "Admin")] public IActionResult DeleteFloorApproved(int dat) { DataFloor floor = _unitOfWork.DataFloor.Get(u => u.DataFloorId == dat); ///////////////original floor delete////// IEnumerable floors = _unitOfWork.Floor.Where(u => u.Name == floor.Name); if (floors != null) { foreach (var itemq in floors) { IEnumerable action = _unitOfWork.Action.Where(u => u.FloorId == itemq.FloorId); foreach (var item3 in action) { IEnumerable task = _unitOfWork.Task.Where(n => n.ActionId == item3.ActionId); foreach (var item in task) { IEnumerable material = _unitOfWork.Material.Where(b => b.TaskId == item.TaskId); foreach (var item2 in material) { _unitOfWork.Material.Remove(item2); _unitOfWork.save(); } IEnumerable property = _unitOfWork.Property.Where(b => b.TaskId == item.TaskId); foreach (var item4 in property) { _unitOfWork.Property.Remove(item4); _unitOfWork.save(); } _unitOfWork.Task.Remove(item); _unitOfWork.save(); } _unitOfWork.Action.Remove(item3); _unitOfWork.save(); } _unitOfWork.Floor.Remove(itemq); _unitOfWork.save(); } } ////////////////////////////////////////// ///////////////floor template delete////// IEnumerable actions = _unitOfWork.TemplateAction.Where(u => u.DataFloorId == dat); if (actions != null) { foreach (var itemm in actions) { _unitOfWork.TemplateAction.Remove(itemm); _unitOfWork.save(); } } ////////////////////////////////////////// _unitOfWork.DataFloor.Remove(floor); _unitOfWork.save(); TempData["success"] = "Floor Deleted successfully"; return RedirectToAction("GetFloors", "Data"); } [Authorize(Roles = "Admin")] [HttpGet] public IActionResult DeleteAction(int? id) { DataAction action = _unitOfWork.DataAction.Get(u => u.DataActionId == id); if (action != null) { return View(action); } else { TempData["error"] = "Not Found!"; return RedirectToAction("GetActions", "Data"); } } [Authorize(Roles = "Admin")] public IActionResult DeleteActionApproved(int dat) { DataAction action = _unitOfWork.DataAction.Get(u => u.DataActionId == dat); /////////original action delete////// string a_name = ""; string last_cc = action.Name[action.Name.Length - 1].ToString(); if (int.TryParse(last_cc, out _) == true) { a_name = action.Name.Substring(0, action.Name.Length - 2); } else { a_name = action.Name; } List actions = new List(); List vactions = _unitOfWork.Action.GetAll().ToList(); if (vactions != null) { foreach (var bn in vactions) { string last_vc = bn.Name[bn.Name.Length - 1].ToString(); if (int.TryParse(last_vc, out _) == true) { if (a_name == bn.Name.Substring(0, bn.Name.Length - 2)) { actions.Add(bn); } } else { if (a_name == bn.Name) { actions.Add(bn); } } } } if (actions != null) { foreach (var itemr in actions) { IEnumerable task = _unitOfWork.Task.Where(n => n.ActionId == itemr.ActionId); if (task != null) { foreach (var item in task) { IEnumerable material = _unitOfWork.Material.Where(b => b.TaskId == item.TaskId); if (material != null) { foreach (var item2 in material) { _unitOfWork.Material.Remove(item2); _unitOfWork.save(); } } IEnumerable property = _unitOfWork.Property.Where(v => v.TaskId == item.TaskId); if (property != null) { foreach (var item3 in property) { _unitOfWork.Property.Remove(item3); _unitOfWork.save(); } } _unitOfWork.Task.Remove(item); _unitOfWork.save(); } } _unitOfWork.Action.Remove(itemr); _unitOfWork.save(); } } ///////////////////////////////////// /////////template action delete////// List tactions = new List(); List aactions = _unitOfWork.TemplateAction.GetAll().ToList(); if (aactions != null) { foreach (var bn in aactions) { string last_vc = bn.Name[bn.Name.Length - 1].ToString(); if (int.TryParse(last_vc, out _) == true) { if (a_name == bn.Name.Substring(0, bn.Name.Length - 2)) { tactions.Add(bn); } } else { if (a_name == bn.Name) { tactions.Add(bn); } } } } if (tactions != null) { foreach (var itemrb in tactions) { IEnumerable ttask = _unitOfWork.TemplateTask.Where(n => n.DataActionId == itemrb.TemplateAId); if (ttask != null) { foreach (var item in ttask) { /*IEnumerable tmaterial = _unitOfWork.TemplateMaterial.Where(b => b.DataTaskId == item.TemplateTId); if (tmaterial != null) { foreach (var item2 in tmaterial) { _unitOfWork.TemplateMaterial.Remove(item2); _unitOfWork.save(); } } IEnumerable tproperty = _unitOfWork.TemplateProperty.Where(v => v.DataTaskId == item.TemplateTId); if (tproperty != null) { foreach (var item3 in tproperty) { _unitOfWork.TemplateProperty.Remove(item3); _unitOfWork.save(); } }*/ _unitOfWork.TemplateTask.Remove(item); _unitOfWork.save(); } } _unitOfWork.TemplateAction.Remove(itemrb); _unitOfWork.save(); } } ///////////////////////////////////// _unitOfWork.DataAction.Remove(action); _unitOfWork.save(); TempData["success"] = "Action Deleted successfully"; return RedirectToAction("GetActions", "Data"); } [Authorize(Roles = "Admin")] [HttpGet] public IActionResult DeleteTask(int? id) { DataTask task = _unitOfWork.DataTask.Get(u => u.DataTaskId == id); if (task != null) { return View(task); } else { TempData["error"] = "Not Found!"; return RedirectToAction("GetTasks", "Data"); } } [Authorize(Roles = "Admin")] public IActionResult DeleteTaskApproved(int dat) { DataTask task = _unitOfWork.DataTask.Get(u => u.DataTaskId == dat); /////////original task delete///////// IEnumerable tasks = _unitOfWork.Task.Where(u => u.Name == task.Name); if (tasks != null) { foreach (var itemt in tasks) { IEnumerable material = _unitOfWork.Material.Where(v => v.TaskId == itemt.TaskId); if (material != null) { foreach (var item in material) { _unitOfWork.Material.Remove(item); _unitOfWork.save(); } } IEnumerable property = _unitOfWork.Property.Where(b => b.TaskId == itemt.TaskId); if (property != null) { foreach (var item4 in property) { _unitOfWork.Property.Remove(item4); _unitOfWork.save(); } } _unitOfWork.Task.Remove(itemt); _unitOfWork.save(); } } ////////////////////////////////////// /////////Template Task Deletion/////// IEnumerable t_tasks = _unitOfWork.TemplateTask.Where(u=>u.Name == task.Name); if (t_tasks != null) { foreach (var item in t_tasks) { IEnumerable materials = _unitOfWork.TemplateMaterial.Where(v => v.DataTaskId == item.TemplateTId); if (materials != null) { foreach (var itemn in materials) { _unitOfWork.TemplateMaterial.Remove(itemn); _unitOfWork.save(); } } IEnumerable propertyy = _unitOfWork.TemplateProperty.Where(b => b.DataTaskId == item.TemplateTId); if (propertyy != null) { foreach (var item4 in propertyy) { _unitOfWork.TemplateProperty.Remove(item4); _unitOfWork.save(); } } _unitOfWork.TemplateTask.Remove(item); _unitOfWork.save(); } } //////////////////////////////////////////////////////////// _unitOfWork.DataTask.Remove(task); _unitOfWork.save(); TempData["success"] = "Task Deleted successfully"; return RedirectToAction("GetTasks", "Data"); } [Authorize(Roles = "Admin")] [HttpGet] public IActionResult DeleteProperty(int? id) { DataProperty property = _unitOfWork.DataProperty.Get(u => u.DataPropertyId == id); if (property != null) { return View(property); } else { TempData["error"] = "Not Found!"; return RedirectToAction("GetProperties", "Data"); } } [Authorize(Roles = "Admin")] public IActionResult DeletePropertyApproved(int dat) { DataProperty property = _unitOfWork.DataProperty.Get(u => u.DataPropertyId == dat); ///////original property delete/////// IEnumerable properties = _unitOfWork.Property.Where(u => u.Name == property.Name); if (properties != null) { foreach (var itemv in properties) { _unitOfWork.Property.Remove(itemv); _unitOfWork.save(); } } ////////////////////////////////////// ////////// template delete/////// IEnumerable propertiess = _unitOfWork.TemplateProperty.Where(u => u.Name == property.Name); if (propertiess != null) { foreach (var itemv in propertiess) { ///////////// formula delete/////// IEnumerable formulasP = _unitOfWork.TemplateFormulaP.Where(u => u.TemplatePId == itemv.TemplatePId); if (formulasP != null) { foreach (var itemnv in formulasP) { _unitOfWork.TemplateFormulaP.Remove(itemnv); _unitOfWork.save(); } } ////////////////////////////////////// _unitOfWork.TemplateProperty.Remove(itemv); _unitOfWork.save(); } } ////////////////////////////////////// _unitOfWork.DataProperty.Remove(property); _unitOfWork.save(); TempData["success"] = "Property Deleted successfully"; return RedirectToAction("GetProperties", "Data"); } [Authorize(Roles = "Admin")] [HttpGet] public IActionResult DeleteMaterial(int? id) { DataMaterial action = _unitOfWork.DataMaterial.Get(u => u.DataMaterialId == id); if (action != null) { return View(action); } else { TempData["error"] = "Not Found!"; return RedirectToAction("GetMaterials", "Data"); } } [Authorize(Roles = "Admin")] public IActionResult DeleteMaterialApproved(int dat) { DataMaterial material = _unitOfWork.DataMaterial.Get(u => u.DataMaterialId == dat); ///////original material delete/////// IEnumerable materials = _unitOfWork.Material.Where(u => u.Name == material.Name); if (materials != null) { foreach (var itemv in materials) { double? mat_cost = 0; ActionTask task = _unitOfWork.Task.Get(u => u.TaskId == itemv.TaskId); if (task != null) { IEnumerable mats = _unitOfWork.Material.Where(u => u.TaskId == task.TaskId); if (mats.Any()) { foreach (var itmm in mats) { mat_cost = mat_cost + (itemv.Unit_Cost * itemv.Qty); } } task.Material_Cost = mat_cost - (itemv.Unit_Cost * itemv.Qty); task.Mat_Lab = task.Labor_Cost + task.Material_Cost; _unitOfWork.Task.update(task); _unitOfWork.save(); } _unitOfWork.Material.Remove(itemv); _unitOfWork.save(); } } ////////////////////////////////////// ////////// template delete/////// IEnumerable materialss = _unitOfWork.TemplateMaterial.Where(u => u.Name == material.Name); if (materialss != null) { foreach (var itemv in materialss) { /////////////original formula delete/////// IEnumerable formulas = _unitOfWork.TemplateFormula.Where(u => u.TemplateMId == itemv.TemplateMId); if (formulas != null) { foreach (var itemn in formulas) { _unitOfWork.TemplateFormula.Remove(itemn); _unitOfWork.save(); } } ////////////////////////////////////// _unitOfWork.TemplateMaterial.Remove(itemv); _unitOfWork.save(); } } ////////////////////////////////////// _unitOfWork.DataMaterial.Remove(material); _unitOfWork.save(); TempData["success"] = "Material Deleted successfully"; return RedirectToAction("GetMaterials", "Data"); } [Authorize(Roles = "Admin")] [HttpGet] public IActionResult AddTMaterial(int? id) { ViewBag.Id = id; TemplateMaterial tmaterial = new() { }; IEnumerable MaterialList = _unitOfWork.DataMaterial.GetAll(); List materials = new List(); foreach (var item in MaterialList) { materials.Add(item.Name); } ViewBag.MaterialList = materials; return View(tmaterial); } [Authorize(Roles = "Admin")] [HttpPost] public IActionResult AddTMaterial(TemplateMaterial obj) { if (ModelState.IsValid) { bool checker = false; IEnumerable properties = _unitOfWork.TemplateMaterial.Where(u => u.Name == obj.Name); if (properties != null) { foreach (var item in properties) { if (item.DataTaskId == obj.DataTaskId) { checker = true; } } } if (checker == true) { TempData["error"] = "Material already present"; } else { _unitOfWork.TemplateMaterial.Add(obj); _unitOfWork.save(); TempData["success"] = "Material Added successfully"; } return RedirectToAction("DTaskDetails", "Data", new { id = obj.DataTaskId }); } else { TempData["error"] = "Something Wrong!"; return View(obj); } } [Authorize(Roles = "Admin")] public IActionResult DeleteTMaterial (int? id) { TemplateMaterial tmaterial = _unitOfWork.TemplateMaterial.Get(u => u.TemplateMId == id); int temp = tmaterial.DataTaskId; //////// ///////////////////////Remove from original project///// DataTask task = _unitOfWork.DataTask.Get(u => u.DataTaskId == temp); if (task != null) { IEnumerable tasks = _unitOfWork.Task.Where(u => u.Name == task.Name); if (tasks != null) { foreach (var itemh in tasks) { IEnumerable propertiesh = _unitOfWork.Material.Where(u => u.TaskId == itemh.TaskId); if (propertiesh != null) { Material dproperty = propertiesh.FirstOrDefault(u => u.Name == tmaterial.Name); _unitOfWork.Material.Remove(dproperty); _unitOfWork.save(); } } } } //////////////////////////////////////////////////////// TemplateFormula formulaP = _unitOfWork.TemplateFormula.Get(u => u.TemplateMId == tmaterial.TemplateMId); if (formulaP != null) { _unitOfWork.TemplateFormula.Remove(formulaP); _unitOfWork.save(); } //////// _unitOfWork.TemplateMaterial.Remove(tmaterial); _unitOfWork.save(); TempData["success"] = "Material Deleted successfully"; return RedirectToAction("DTaskDetails", "Data", new { id = temp }); } [Authorize(Roles = "Admin,Employee,Customer")] public IActionResult PopulateTask (int? id) { var nam = _unitOfWork.Task.Get(u => u.TaskId == id).Name; ///////////////////////////// string last_c = nam[nam.Length - 1].ToString(); int idd; if (int.TryParse(last_c, out _) == true) { idd = _unitOfWork.DataTask.Get(u => u.Name == nam.Substring(0, nam.Length - 2)).DataTaskId; } else { idd = _unitOfWork.DataTask.Get(u => u.Name == nam).DataTaskId; } ///////////////////////////// IEnumerable materials = _unitOfWork.TemplateMaterial.Where(u=>u.DataTaskId == idd); IEnumerable properties = _unitOfWork.TemplateProperty.Where(u => u.DataTaskId == idd); int a_id = _unitOfWork.Task.Get(u => u.TaskId == id).ActionId; int f_id = _unitOfWork.Action.Get(u=>u.ActionId == a_id).FloorId; int p_id = _unitOfWork.Floor.Get(u => u.FloorId == f_id).ODCProjectId; ODCProject project = _unitOfWork.ODCProject.Get(u => u.Id == p_id); /////check duplication IEnumerable old_materials = _unitOfWork.Material.Where(u => u.TaskId == id); IEnumerable old_properties = _unitOfWork.Property.Where(u => u.TaskId == id); bool checker = false; bool checker1 = false; ///// foreach (var material in materials) { checker = false; DataMaterial dbMaterial = _unitOfWork.DataMaterial.Get(u => u.Name == material.Name); if (dbMaterial != null) { int iddd = dbMaterial.DataMaterialId; double? u_cost = _unitOfWork.DataMaterial.Get(u => u.DataMaterialId == iddd).Unit_Cost; Material obj = new Material { Name = material.Name, TaskId = id, Unit = "Not given", Qty = 0, ODCProjectId = p_id, ODCProject = project, FloorId = f_id, ActionId = a_id, Unit_Cost = u_cost }; foreach (var o_material in old_materials) { if (o_material.Name == obj.Name) { checker = true; break; } } if (checker == false) { _unitOfWork.Material.Add(obj); _unitOfWork.save(); } } } foreach (var property in properties) { checker1 = false; DataProperty dbProperty = _unitOfWork.DataProperty.Get(u => u.Name == property.Name); if (dbProperty != null) { int iddd = dbProperty.DataPropertyId; Property obj = new Property { Name = property.Name, TaskId = (int)id, Description = "Not given", Value = 0, Visible = property.Visible }; foreach (var o_property in old_properties) { if (o_property.Name == obj.Name) { checker1 = true; break; } } if (checker1 == false) { _unitOfWork.Property.Add(obj); _unitOfWork.save(); } } } TempData["success"] = "Done!"; return RedirectToAction("TaskDetails", "ODCProject", new {area = "Staff", id }); } ////////////////////////////////////////////////////////////////// [Authorize(Roles = "Admin")] [HttpGet] public IActionResult DActionDetails(int? id) { ViewBag.Action = _unitOfWork.DataAction.Get(u => u.DataActionId == id).Name; ViewBag.Id = id; List tasks = _unitOfWork.TemplateTask.Where(u => u.DataActionId == id).ToList(); return View(tasks); } [Authorize(Roles = "Admin")] [HttpGet] public IActionResult DFloorDetails(int? id) { ViewBag.Floor = _unitOfWork.DataFloor.Get(u => u.DataFloorId == id).Name; ViewBag.Id = id; List actions = _unitOfWork.TemplateAction.Where(u => u.DataFloorId == id).ToList(); /*if (actions.Count == 0) { ViewBag.Answer = "nothing available"; } else { ViewBag.Answer = "available"; }*/ return View(actions); } [Authorize(Roles = "Admin")] [HttpGet] public IActionResult AddTTask(int? id) { ViewBag.Id = id; TemplateTask ttask = new() { }; IEnumerable TaskList = _unitOfWork.DataTask.GetAll(); List tasks = new List(); foreach (var item in TaskList) { tasks.Add(item.Name); } ViewBag.TaskList = tasks; return View(ttask); } [Authorize(Roles = "Admin")] [HttpPost] public IActionResult AddTTask (TemplateTask obj) { if (ModelState.IsValid) { bool checker = false; IEnumerable properties = _unitOfWork.TemplateTask.Where(u => u.Name == obj.Name); if (properties != null) { foreach (var item in properties) { if (item.DataActionId == obj.DataActionId) { checker = true; } } } if (checker == true) { TempData["error"] = "Task already present"; } else { _unitOfWork.TemplateTask.Add(obj); _unitOfWork.save(); TempData["success"] = "Task Added successfully"; } return RedirectToAction("DActionDetails", "Data", new { id = obj.DataActionId }); } else { TempData["error"] = "Something Wrong!"; return View(obj); } } [Authorize(Roles = "Admin")] [HttpGet] public IActionResult AddTAction(int? id) { ViewBag.Id = id; TemplateAction taction = new() { }; IEnumerable ActionList = _unitOfWork.DataAction.GetAll(); List actions = new List(); foreach (var item in ActionList) { actions.Add(item.Name); } ViewBag.ActionList = actions; return View(taction); } [Authorize(Roles = "Admin")] [HttpPost] public IActionResult AddTAction(TemplateAction obj) { if (ModelState.IsValid) { ///////////////////////////////////////// bool checker = false; IEnumerable properties = _unitOfWork.TemplateAction.Where(u => u.Name == obj.Name); if (properties != null) { foreach (var item in properties) { if (item.DataFloorId == obj.DataFloorId) { checker = true; } } } if (checker == true) { TempData["error"] = "Action already present"; } else { _unitOfWork.TemplateAction.Add(obj); _unitOfWork.save(); TempData["success"] = "Action Added successfully"; } return RedirectToAction("DFloorDetails", "Data", new { id = obj.DataFloorId }); } else { TempData["error"] = "Something Wrong!"; return View(obj); } } [Authorize(Roles = "Admin")] public IActionResult DeleteTTask(int? id) { TemplateTask ttask = _unitOfWork.TemplateTask.Get(u => u.TemplateTId == id); TemplateAction taction = _unitOfWork.TemplateAction.Get(u => u.TemplateAId == ttask.DataActionId); DataFloor floor = _unitOfWork.DataFloor.Get(u => u.DataFloorId == taction.DataFloorId); string t_name = ""; string a_name = ""; string f_name = ""; if (taction != null && floor != null && ttask != null) { f_name = floor.Name; a_name = taction.Name; t_name = ttask.Name; } int temp = ttask.DataActionId; ////////////// if (a_name != "" && t_name != "" && f_name != "") { IEnumerable floors = _unitOfWork.Floor.Where(u => u.Name == f_name); if (floors != null) { foreach (var itemf in floors) { IEnumerable actions = _unitOfWork.Action.Where(u => u.FloorId == itemf.FloorId); if (actions != null) { foreach (var itema in actions) { IEnumerable tasks = _unitOfWork.Task.Where(u => u.ActionId == itema.ActionId); if (tasks != null) { foreach (var itemt in tasks) { if (itemt.Name == t_name && itema.Name == a_name) { IEnumerable properties = _unitOfWork.Property.Where(u => u.TaskId == itemt.TaskId); if (properties != null) { foreach (var itemp in properties) { _unitOfWork.Property.Remove(itemp); _unitOfWork.save(); } } IEnumerable propertiess = _unitOfWork.Material.Where(u => u.TaskId == itemt.TaskId); if (propertiess != null) { foreach (var itemps in propertiess) { _unitOfWork.Material.Remove(itemps); _unitOfWork.save(); } } _unitOfWork.Task.Remove(itemt); _unitOfWork.save(); } } } } } } } } ////////////// _unitOfWork.TemplateTask.Remove(ttask); _unitOfWork.save(); TempData["success"] = "Task Deleted successfully"; return RedirectToAction("DActionDetails", "Data", new { id = temp }); } [Authorize(Roles = "Admin")] public IActionResult DeleteTAction(int? id) { TemplateAction taction = _unitOfWork.TemplateAction.Get(u => u.TemplateAId == id); DataFloor floor = _unitOfWork.DataFloor.Get(u => u.DataFloorId == taction.DataFloorId); string a_name = ""; string f_name = ""; if (taction != null && floor != null) { f_name = floor.Name; a_name = taction.Name; } int temp = taction.DataFloorId; /////////// if (a_name != "" && f_name != "") { IEnumerable floors = _unitOfWork.Floor.Where(u => u.Name == f_name); if (floors != null) { foreach (var itemf in floors) { IEnumerable actions = _unitOfWork.Action.Where(u => u.FloorId == itemf.FloorId); if (actions != null) { foreach (var itema in actions) { IEnumerable tasks = _unitOfWork.Task.Where(u => u.ActionId == itema.ActionId); if (tasks != null) { foreach (var itemt in tasks) { if (itema.Name == a_name) { IEnumerable properties = _unitOfWork.Property.Where(u => u.TaskId == itemt.TaskId); if (properties != null) { foreach (var itemp in properties) { _unitOfWork.Property.Remove(itemp); _unitOfWork.save(); } } IEnumerable propertiess = _unitOfWork.Material.Where(u => u.TaskId == itemt.TaskId); if (propertiess != null) { foreach (var itemps in propertiess) { _unitOfWork.Material.Remove(itemps); _unitOfWork.save(); } } _unitOfWork.Task.Remove(itemt); _unitOfWork.save(); } } } if (itema.Name == a_name) { _unitOfWork.Action.Remove(itema); _unitOfWork.save(); } } } } } } /////////// _unitOfWork.TemplateAction.Remove(taction); _unitOfWork.save(); TempData["success"] = "Action Deleted successfully"; return RedirectToAction("DFloorDetails", "Data", new { id = temp }); } ///////////////////////////////////////// [Authorize(Roles = "Admin,Employee,Customer")] public IActionResult PopulateAction(int? id) { var nam = _unitOfWork.Action.Get(u => u.ActionId == id).Name; ///////////////////////////////////////////////// string last_c = nam[nam.Length - 1].ToString(); int idd; if (int.TryParse(last_c, out _) == true) { idd = _unitOfWork.DataAction.Get(u => u.Name == nam.Substring(0,nam.Length - 2)).DataActionId; } else { idd = _unitOfWork.DataAction.Get(u => u.Name == nam).DataActionId; } ///////////////////////////////////////////////// IEnumerable tasks = _unitOfWork.TemplateTask.Where(u => u.DataActionId == idd); if (tasks.Count() != 0) { int f_id = _unitOfWork.Action.Get(u => u.ActionId == id).FloorId; int p_id = _unitOfWork.Floor.Get(u => u.FloorId == f_id).ODCProjectId; ODCProject project = _unitOfWork.ODCProject.Get(u => u.Id == p_id); /////check duplication IEnumerable old_tasks = _unitOfWork.Task.Where(u => u.ActionId == id); bool checker1 = false; foreach (var Task in tasks) { checker1 = false; ActionTask obj = new ActionTask { Name = Task.Name, ActionId = (int)id, Material_Cost = 0, Labor_Cost = 0, Labor_Rate = 0, Measured_Work = 0, Mat_Lab = 0, Completion = 0, SDate = new DateOnly(2020, 1, 1), Duration = 0 }; if (old_tasks != null) { foreach (var o_Task in old_tasks) { if (o_Task.Name == obj.Name) { checker1 = true; break; } } } if (checker1 == false) { _unitOfWork.Task.Add(obj); _unitOfWork.save(); } } /////////////////////////////////Add properties and materials IEnumerable new_tasks = _unitOfWork.Task.Where(u => u.ActionId == id); if (new_tasks.Any()) { foreach (var task in new_tasks) { int new_id = task.TaskId; /////////////////////// var new_nam = _unitOfWork.Task.Get(u => u.TaskId == new_id).Name; int new_idd = _unitOfWork.DataTask.Get(u => u.Name == new_nam).DataTaskId; IEnumerable new_materials = _unitOfWork.TemplateMaterial.Where(u => u.DataTaskId == new_idd); IEnumerable new_properties = _unitOfWork.TemplateProperty.Where(u => u.DataTaskId == new_idd); int new_a_id = _unitOfWork.Task.Get(u => u.TaskId == new_id).ActionId; int new_f_id = _unitOfWork.Action.Get(u => u.ActionId == new_a_id).FloorId; int new_p_id = _unitOfWork.Floor.Get(u => u.FloorId == new_f_id).ODCProjectId; ODCProject new_project = _unitOfWork.ODCProject.Get(u => u.Id == new_p_id); /////check duplication IEnumerable new_old_materials = _unitOfWork.Material.Where(u => u.TaskId == new_id); IEnumerable new_old_properties = _unitOfWork.Property.Where(u => u.TaskId == new_id); bool new_checker = false; bool new_checker1 = false; ///// if (new_materials != null) { foreach (var material in new_materials) { new_checker = false; DataMaterial dbMaterial = _unitOfWork.DataMaterial.Get(u => u.Name == material.Name); if (dbMaterial != null) { int new_iddd = dbMaterial.DataMaterialId; double? new_u_cost = _unitOfWork.DataMaterial.Get(u => u.DataMaterialId == new_iddd).Unit_Cost; Material new_obj = new Material { Name = material.Name, TaskId = new_id, Unit = "Not given", Qty = 0, ODCProjectId = new_p_id, ODCProject = new_project, FloorId = new_f_id, ActionId = new_a_id, Unit_Cost = new_u_cost }; if (new_old_materials.Any()) { foreach (var o_material in new_old_materials) { if (o_material.Name == new_obj.Name) { new_checker = true; break; } } } if (new_checker == false) { _unitOfWork.Material.Add(new_obj); _unitOfWork.save(); } } } } if (new_properties != null) { foreach (var property in new_properties) { new_checker1 = false; DataProperty dbProperty = _unitOfWork.DataProperty.Get(u => u.Name == property.Name); if (dbProperty != null) { int new_iddd = dbProperty.DataPropertyId; Property new_obj = new Property { Name = property.Name, TaskId = (int)new_id, Description = "Not given", Value = 0, Visible = property.Visible }; if (new_old_properties.Any()) { foreach (var o_property in new_old_properties) { if (o_property.Name == new_obj.Name) { new_checker1 = true; break; } } } if (new_checker1 == false) { _unitOfWork.Property.Add(new_obj); _unitOfWork.save(); } } } } /////////////////////// } } ///////////////////////////////// TempData["success"] = "Done!"; return RedirectToAction("ActionDetails", "ODCProject", new { area = "Staff", id }); } else { TempData["error"] = "No template found!"; return View("Error"); } } [Authorize(Roles = "Admin,Employee,Customer")] public IActionResult PopulateFloor(int? iid) { /////////////////// var namm = _unitOfWork.Floor.Get(u => u.FloorId == iid).Name; int iddd = _unitOfWork.DataFloor.Get(u => u.Name == namm).DataFloorId; IEnumerable actions = _unitOfWork.TemplateAction.Where(u => u.DataFloorId == iddd); if (actions.Count() != 0) { int pp_id = _unitOfWork.Floor.Get(u => u.FloorId == iid).ODCProjectId; Floor floor = _unitOfWork.Floor.Get(u => u.FloorId == iid); ODCProject projecttt = _unitOfWork.ODCProject.Get(u => u.Id == pp_id); /////check duplication IEnumerable old_actions = _unitOfWork.Action.Where(u => u.FloorId == iid); bool cchecker1 = false; foreach (var Action in actions) { cchecker1 = false; FloorAction obj = new FloorAction { Name = Action.Name, FloorId = (int)iid, A_Material_Cost = 0, Floor = floor }; if (old_actions != null) { foreach (var o_Action in old_actions) { if (o_Action.Name == obj.Name) { cchecker1 = true; break; } } } if (cchecker1 == false) { _unitOfWork.Action.Add(obj); _unitOfWork.save(); } } /////////////////// IEnumerable new_actions = _unitOfWork.Action.Where(u => u.FloorId == iid); if (new_actions.Any()) { foreach (var action in new_actions) { int id = action.ActionId; ////////////////////////////////// FloorAction act = _unitOfWork.Action.Get(u => u.ActionId == id); string last_c = act.Name[act.Name.Length - 1].ToString(); string nam = ""; if (int.TryParse(last_c, out _) == true) { nam = act.Name.Substring(0, act.Name.Length - 2); } else { nam = act.Name; } int idd = _unitOfWork.DataAction.Get(u => u.Name == nam).DataActionId; IEnumerable tasks = _unitOfWork.TemplateTask.Where(u => u.DataActionId == idd); int f_id = _unitOfWork.Action.Get(u => u.ActionId == id).FloorId; int p_id = _unitOfWork.Floor.Get(u => u.FloorId == f_id).ODCProjectId; ODCProject project = _unitOfWork.ODCProject.Get(u => u.Id == p_id); /////check duplication IEnumerable old_tasks = _unitOfWork.Task.Where(u => u.ActionId == id); bool checker1 = false; if (tasks != null) { foreach (var Task in tasks) { checker1 = false; ActionTask obj = new ActionTask { Name = Task.Name, ActionId = (int)id, Material_Cost = 0, Labor_Cost = 0, Labor_Rate = 0, Measured_Work = 0, Mat_Lab = 0, Completion = 0, SDate = new DateOnly(2020, 1, 1), Duration = 0 }; if (old_tasks != null) { foreach (var o_Task in old_tasks) { if (o_Task.Name == obj.Name) { checker1 = true; break; } } } if (checker1 == false) { _unitOfWork.Task.Add(obj); _unitOfWork.save(); } } } /////////////////////////////////Add properties and materials IEnumerable new_tasks = _unitOfWork.Task.Where(u => u.ActionId == id); if (new_tasks.Any()) { foreach (var task in new_tasks) { int new_id = task.TaskId; /////////////////////// var new_nam = _unitOfWork.Task.Get(u => u.TaskId == new_id).Name; int new_idd = _unitOfWork.DataTask.Get(u => u.Name == new_nam).DataTaskId; IEnumerable new_materials = _unitOfWork.TemplateMaterial.Where(u => u.DataTaskId == new_idd); IEnumerable new_properties = _unitOfWork.TemplateProperty.Where(u => u.DataTaskId == new_idd); int new_a_id = _unitOfWork.Task.Get(u => u.TaskId == new_id).ActionId; int new_f_id = _unitOfWork.Action.Get(u => u.ActionId == new_a_id).FloorId; int new_p_id = _unitOfWork.Floor.Get(u => u.FloorId == new_f_id).ODCProjectId; ODCProject new_project = _unitOfWork.ODCProject.Get(u => u.Id == new_p_id); /////check duplication IEnumerable new_old_materials = _unitOfWork.Material.Where(u => u.TaskId == new_id); IEnumerable new_old_properties = _unitOfWork.Property.Where(u => u.TaskId == new_id); bool new_checker = false; bool new_checker1 = false; ///// if (new_materials.Any()) { foreach (var material in new_materials) { new_checker = false; DataMaterial dbMaterial = _unitOfWork.DataMaterial.Get(u => u.Name == material.Name); if (dbMaterial != null) { int new_iddd = dbMaterial.DataMaterialId; double? new_u_cost = _unitOfWork.DataMaterial.Get(u => u.DataMaterialId == new_iddd).Unit_Cost; Material new_obj = new Material { Name = material.Name, TaskId = new_id, Unit = "Not given", Qty = 0, ODCProjectId = new_p_id, ODCProject = new_project, FloorId = new_f_id, ActionId = new_a_id, Unit_Cost = new_u_cost }; if (new_old_materials.Any()) { foreach (var o_material in new_old_materials) { if (o_material.Name == new_obj.Name) { new_checker = true; break; } } } if (new_checker == false) { _unitOfWork.Material.Add(new_obj); _unitOfWork.save(); } } } } if (new_properties.Any()) { foreach (var property in new_properties) { new_checker1 = false; DataProperty dbProperty = _unitOfWork.DataProperty.Get(u => u.Name == property.Name); if (dbProperty != null) { int new_iddd = dbProperty.DataPropertyId; Property new_obj = new Property { Name = property.Name, TaskId = (int)new_id, Description = "Not given", Value = 0, Visible = property.Visible }; if (new_old_properties.Any()) { foreach (var o_property in new_old_properties) { if (o_property.Name == new_obj.Name) { new_checker1 = true; break; } } } if (new_checker1 == false) { _unitOfWork.Property.Add(new_obj); _unitOfWork.save(); } } } } /////////////////////// } } ////////////////////////////////// } } ///////////////////////////////// TempData["success"] = "Done!"; return RedirectToAction("FloorDetails", "ODCProject", new { area = "Staff", id = iid }); } else { TempData["error"] = "No template found!"; return View("Error"); } } [Authorize(Roles = "Admin,Employee,Customer")] public IActionResult PopulateProject1(int ipd) { IEnumerable old_floors_check = _unitOfWork.Floor.Where(u => u.ODCProjectId == ipd); if (old_floors_check.Any()) { foreach(var o_floor in old_floors_check) { _unitOfWork.Floor.Remove(o_floor); _unitOfWork.save(); } } Floor new_floor = new Floor { Name = "Ground Floor", ODCProjectId = ipd, ODCProject = _unitOfWork.ODCProject.Get(u=>u.Id == ipd), F_Material_Cost = 0 }; _unitOfWork.Floor.Add(new_floor); _unitOfWork.save(); ////////////////////////////////////////// int iid = new_floor.FloorId; ////////////////////////////////////////// string namm = _unitOfWork.Floor.Get(u => u.FloorId == iid).Name; int iddd = _unitOfWork.DataFloor.Get(u => u.Name == namm).DataFloorId; IEnumerable actions = _unitOfWork.TemplateAction.Where(u => u.DataFloorId == iddd); int pp_id = _unitOfWork.Floor.Get(u => u.FloorId == iid).ODCProjectId; Floor floor = _unitOfWork.Floor.Get(u => u.FloorId == iid); ODCProject projecttt = _unitOfWork.ODCProject.Get(u => u.Id == pp_id); /////check duplication /* IEnumerable old_actions = _unitOfWork.Action.Where(u => u.FloorId == iid); */ bool cchecker1 = false; if (actions.Any()) { foreach (var Action in actions) { cchecker1 = false; FloorAction obj = new FloorAction { Name = Action.Name, FloorId = (int)iid, A_Material_Cost = 0, Floor = floor }; /*foreach (var o_Action in old_actions) { if (o_Action.Name == obj.Name) { cchecker1 = true; break; } }*/ if (cchecker1 == false) { _unitOfWork.Action.Add(obj); _unitOfWork.save(); } } } /////////////////// IEnumerable new_actions = _unitOfWork.Action.Where(u => u.FloorId == iid); if (new_actions.Any()) { foreach (var action in new_actions) { int id = action.ActionId; ////////////////////////////////// FloorAction act = _unitOfWork.Action.Get(u => u.ActionId == id); string last_c = act.Name[act.Name.Length - 1].ToString(); string nam = ""; if (int.TryParse(last_c, out _) == true) { nam = act.Name.Substring(0, act.Name.Length - 2); } else { nam = act.Name; } int idd = _unitOfWork.DataAction.Get(u => u.Name == nam).DataActionId; IEnumerable tasks = _unitOfWork.TemplateTask.Where(u => u.DataActionId == idd); int f_id = _unitOfWork.Action.Get(u => u.ActionId == id).FloorId; int p_id = _unitOfWork.Floor.Get(u => u.FloorId == f_id).ODCProjectId; ODCProject project = _unitOfWork.ODCProject.Get(u => u.Id == p_id); /////check duplication /*IEnumerable old_tasks = _unitOfWork.Task.Where(u => u.ActionId == id); */ bool checker1 = false; if (tasks != null) { foreach (var Task in tasks) { checker1 = false; ActionTask obj = new ActionTask { Name = Task.Name, ActionId = (int)id, Material_Cost = 0, Labor_Cost = 0, Labor_Rate = 0, Measured_Work = 0, Mat_Lab = 0, Completion = 0, SDate = new DateOnly(2020, 1, 1), Duration = 0 }; /*if (old_tasks.Any()) { foreach (var o_Task in old_tasks) { if (o_Task.Name == obj.Name) { checker1 = true; break; } } }*/ if (checker1 == false) { _unitOfWork.Task.Add(obj); _unitOfWork.save(); } } } /////////////////////////////////Add properties and materials IEnumerable new_tasks = _unitOfWork.Task.Where(u => u.ActionId == id); if (new_tasks.Any()) { foreach (var task in new_tasks) { int new_id = task.TaskId; /////////////////////// string new_nam = _unitOfWork.Task.Get(u => u.TaskId == new_id).Name; DataTask dataTask = _unitOfWork.DataTask.Get(u => u.Name == new_nam); if (dataTask == null) { // Try without numeric suffix // string last_crZ = new_nam[new_nam.Length - 1].ToString(); if (new_nam.EndsWith(".") && new_nam.Length > 2) { string checkChar = new_nam[new_nam.Length - 2].ToString(); if (int.TryParse(checkChar, out _)) { new_nam = new_nam.Substring(0, new_nam.Length - 3).Trim(); dataTask = _unitOfWork.DataTask.Get(u => u.Name == new_nam); } } } if (dataTask == null) { TempData["error"] = $"DataTask not found for task: {new_nam}"; continue; // Skip this task } int new_idd = dataTask.DataTaskId; IEnumerable new_materials = _unitOfWork.TemplateMaterial.Where(u => u.DataTaskId == new_idd); IEnumerable new_properties = _unitOfWork.TemplateProperty.Where(u => u.DataTaskId == new_idd); int new_a_id = _unitOfWork.Task.Get(u => u.TaskId == new_id).ActionId; int new_f_id = _unitOfWork.Action.Get(u => u.ActionId == new_a_id).FloorId; int new_p_id = _unitOfWork.Floor.Get(u => u.FloorId == new_f_id).ODCProjectId; ODCProject new_project = _unitOfWork.ODCProject.Get(u => u.Id == new_p_id); /////check duplication /*IEnumerable new_old_materials = _unitOfWork.Material.Where(u => u.TaskId == new_id); IEnumerable new_old_properties = _unitOfWork.Property.Where(u => u.TaskId == new_id); */ bool new_checker = false; bool new_checker1 = false; ///// if (new_materials.Any()) { foreach (var material in new_materials) { new_checker = false; DataMaterial dbMaterial = _unitOfWork.DataMaterial.Get(u => u.Name == material.Name); if (dbMaterial != null) { int new_iddd = dbMaterial.DataMaterialId; double? new_u_cost = _unitOfWork.DataMaterial.Get(u => u.DataMaterialId == new_iddd).Unit_Cost; Material new_obj = new Material { Name = material.Name, TaskId = new_id, Unit = "Not given", Qty = 0, ODCProjectId = new_p_id, ODCProject = new_project, FloorId = new_f_id, ActionId = new_a_id, Unit_Cost = new_u_cost }; /*if (new_old_materials.Any()) { foreach (var o_material in new_old_materials) { if (o_material.Name == new_obj.Name) { new_checker = true; break; } } }*/ if (new_checker == false) { _unitOfWork.Material.Add(new_obj); _unitOfWork.save(); } } } } if (new_properties.Any()) { foreach (var property in new_properties) { new_checker1 = false; DataProperty dbProperty = _unitOfWork.DataProperty.Get(u => u.Name == property.Name); if (dbProperty != null) { int new_iddd = dbProperty.DataPropertyId; Property new_obj = new Property { Name = property.Name, TaskId = (int)new_id, Description = "Not given", Value = 0, Visible = property.Visible }; if (new_checker1 == false) { _unitOfWork.Property.Add(new_obj); _unitOfWork.save(); } } } } /////////////////////// } } ////////////////////////////////// } } ////////////////////////////////////////// return RedirectToAction("Details", "ODCProject", new { area = "Staff", id = ipd }); } [Authorize(Roles = "Admin,Employee,Customer")] public IActionResult PopulateProject2(int ipd) { IEnumerable old_floors_check = _unitOfWork.Floor.Where(u => u.ODCProjectId == ipd); if (old_floors_check.Any()) { foreach (var o_floor in old_floors_check) { _unitOfWork.Floor.Remove(o_floor); _unitOfWork.save(); } } Floor new_floor_1 = new Floor { Name = "Ground Floor", ODCProjectId = ipd, ODCProject = _unitOfWork.ODCProject.Get(u => u.Id == ipd), F_Material_Cost = 0 }; _unitOfWork.Floor.Add(new_floor_1); _unitOfWork.save(); Floor new_floor_2 = new Floor { Name = "First Floor", ODCProjectId = ipd, ODCProject = _unitOfWork.ODCProject.Get(u => u.Id == ipd), F_Material_Cost = 0 }; _unitOfWork.Floor.Add(new_floor_2); _unitOfWork.save(); ////////////////////////////////////////// IEnumerable new_floors = _unitOfWork.Floor.Where(u => u.ODCProjectId == ipd); if (new_floors.Any()) { foreach (var new_floor in new_floors) { int iid = new_floor.FloorId; ////////////////////////////////////////// string namm = _unitOfWork.Floor.Get(u => u.FloorId == iid).Name; int iddd = _unitOfWork.DataFloor.Get(u => u.Name == namm).DataFloorId; IEnumerable actions = _unitOfWork.TemplateAction.Where(u => u.DataFloorId == iddd); int pp_id = _unitOfWork.Floor.Get(u => u.FloorId == iid).ODCProjectId; Floor floor = _unitOfWork.Floor.Get(u => u.FloorId == iid); ODCProject projecttt = _unitOfWork.ODCProject.Get(u => u.Id == pp_id); /////check duplication /* IEnumerable old_actions = _unitOfWork.Action.Where(u => u.FloorId == iid); */ bool cchecker1 = false; if (actions.Any()) { foreach (var Action in actions) { cchecker1 = false; FloorAction obj = new FloorAction { Name = Action.Name, FloorId = (int)iid, A_Material_Cost = 0, Floor = floor }; /*foreach (var o_Action in old_actions) { if (o_Action.Name == obj.Name) { cchecker1 = true; break; } }*/ if (cchecker1 == false) { _unitOfWork.Action.Add(obj); _unitOfWork.save(); } } } /////////////////// IEnumerable new_actions = _unitOfWork.Action.Where(u => u.FloorId == iid); if (new_actions.Any()) { foreach (var action in new_actions) { int id = action.ActionId; ////////////////////////////////// FloorAction act = _unitOfWork.Action.Get(u => u.ActionId == id); string last_c = act.Name[act.Name.Length - 1].ToString(); string nam = ""; if (int.TryParse(last_c, out _) == true) { nam = act.Name.Substring(0, act.Name.Length - 2); } else { nam = act.Name; } int idd = _unitOfWork.DataAction.Get(u => u.Name == nam).DataActionId; IEnumerable tasks = _unitOfWork.TemplateTask.Where(u => u.DataActionId == idd); int f_id = _unitOfWork.Action.Get(u => u.ActionId == id).FloorId; int p_id = _unitOfWork.Floor.Get(u => u.FloorId == f_id).ODCProjectId; ODCProject project = _unitOfWork.ODCProject.Get(u => u.Id == p_id); /////check duplication /*IEnumerable old_tasks = _unitOfWork.Task.Where(u => u.ActionId == id); */ bool checker1 = false; if (tasks != null) { foreach (var Task in tasks) { checker1 = false; ActionTask obj = new ActionTask { Name = Task.Name, ActionId = (int)id, Material_Cost = 0, Labor_Cost = 0, Labor_Rate = 0, Measured_Work = 0, Mat_Lab = 0, Completion = 0, SDate = new DateOnly(2020, 1, 1), Duration = 0 }; /*foreach (var o_Task in old_tasks) { if (o_Task.Name == obj.Name) { checker1 = true; break; } }*/ if (checker1 == false) { _unitOfWork.Task.Add(obj); _unitOfWork.save(); } } } /////////////////////////////////Add properties and materials IEnumerable new_tasks = _unitOfWork.Task.Where(u => u.ActionId == id); if (new_tasks.Any()) { foreach (var task in new_tasks) { int new_id = task.TaskId; /////////////////////// string new_nam = _unitOfWork.Task.Get(u => u.TaskId == new_id).Name; DataTask dataTask = _unitOfWork.DataTask.Get(u => u.Name == new_nam); if (dataTask == null) { // Try without numeric suffix // string last_c = new_nam[new_nam.Length - 1].ToString(); if (new_nam.EndsWith(".") && new_nam.Length > 2) { string checkChar = new_nam[new_nam.Length - 2].ToString(); if (int.TryParse(checkChar, out _)) { new_nam = new_nam.Substring(0, new_nam.Length - 3).Trim(); dataTask = _unitOfWork.DataTask.Get(u => u.Name == new_nam); } } } if (dataTask == null) { TempData["error"] = $"DataTask not found for task: {new_nam}"; continue; // Skip this task } int new_idd = dataTask.DataTaskId; IEnumerable new_materials = _unitOfWork.TemplateMaterial.Where(u => u.DataTaskId == new_idd); IEnumerable new_properties = _unitOfWork.TemplateProperty.Where(u => u.DataTaskId == new_idd); int new_a_id = _unitOfWork.Task.Get(u => u.TaskId == new_id).ActionId; int new_f_id = _unitOfWork.Action.Get(u => u.ActionId == new_a_id).FloorId; int new_p_id = _unitOfWork.Floor.Get(u => u.FloorId == new_f_id).ODCProjectId; ODCProject new_project = _unitOfWork.ODCProject.Get(u => u.Id == new_p_id); /////check duplication /*IEnumerable new_old_materials = _unitOfWork.Material.Where(u => u.TaskId == new_id); IEnumerable new_old_properties = _unitOfWork.Property.Where(u => u.TaskId == new_id); */ bool new_checker = false; bool new_checker1 = false; ///// if (new_materials.Any()) { foreach (var material in new_materials) { new_checker = false; DataMaterial dbMaterial = _unitOfWork.DataMaterial.Get(u => u.Name == material.Name); if (dbMaterial != null) { int new_iddd = dbMaterial.DataMaterialId; double? new_u_cost = _unitOfWork.DataMaterial.Get(u => u.DataMaterialId == new_iddd).Unit_Cost; Material new_obj = new Material { Name = material.Name, TaskId = new_id, Unit = "Not given", Qty = 0, ODCProjectId = new_p_id, ODCProject = new_project, FloorId = new_f_id, ActionId = new_a_id, Unit_Cost = new_u_cost }; /*if (new_old_materials.Any()) { foreach (var o_material in new_old_materials) { if (o_material.Name == new_obj.Name) { new_checker = true; break; } } }*/ if (new_checker == false) { _unitOfWork.Material.Add(new_obj); _unitOfWork.save(); } } } } if (new_properties.Any()) { foreach (var property in new_properties) { new_checker1 = false; DataProperty dbProperty = _unitOfWork.DataProperty.Get(u => u.Name == property.Name); if (dbProperty != null) { int new_iddd = dbProperty.DataPropertyId; Property new_obj = new Property { Name = property.Name, TaskId = (int)new_id, Description = "Not given", Value = 0, Visible = property.Visible }; if (new_checker1 == false) { _unitOfWork.Property.Add(new_obj); _unitOfWork.save(); } } } } /////////////////////// } } ////////////////////////////////// } } } } ////////////////////////////////////////// return RedirectToAction("Details", "ODCProject", new { area = "Staff", id = ipd }); } [Authorize(Roles = "Admin,Employee,Customer")] public IActionResult PopulateProject3(int ipd) { IEnumerable old_floors_check = _unitOfWork.Floor.Where(u => u.ODCProjectId == ipd); if (old_floors_check.Any()) { foreach (var o_floor in old_floors_check) { _unitOfWork.Floor.Remove(o_floor); _unitOfWork.save(); } } Floor new_floor_1 = new Floor { Name = "Ground Floor", ODCProjectId = ipd, ODCProject = _unitOfWork.ODCProject.Get(u => u.Id == ipd), F_Material_Cost = 0 }; _unitOfWork.Floor.Add(new_floor_1); _unitOfWork.save(); Floor new_floor_2 = new Floor { Name = "First Floor", ODCProjectId = ipd, ODCProject = _unitOfWork.ODCProject.Get(u => u.Id == ipd), F_Material_Cost = 0 }; _unitOfWork.Floor.Add(new_floor_2); _unitOfWork.save(); Floor new_floor_3 = new Floor { Name = "Second Floor", ODCProjectId = ipd, ODCProject = _unitOfWork.ODCProject.Get(u => u.Id == ipd), F_Material_Cost = 0 }; _unitOfWork.Floor.Add(new_floor_3); _unitOfWork.save(); ////////////////////////////////////////// IEnumerable new_floors = _unitOfWork.Floor.Where(u => u.ODCProjectId == ipd); foreach (var new_floor in new_floors) { int iid = new_floor.FloorId; ////////////////////////////////////////// string namm = _unitOfWork.Floor.Get(u => u.FloorId == iid).Name; DataFloor floor_from_db = _unitOfWork.DataFloor.Get(u => u.Name == namm); if (floor_from_db != null) { int iddd = floor_from_db.DataFloorId; IEnumerable actions = _unitOfWork.TemplateAction.Where(u => u.DataFloorId == iddd); int pp_id = _unitOfWork.Floor.Get(u => u.FloorId == iid).ODCProjectId; Floor floor = _unitOfWork.Floor.Get(u => u.FloorId == iid); ODCProject projecttt = _unitOfWork.ODCProject.Get(u => u.Id == pp_id); /////check duplication /*IEnumerable old_actions = _unitOfWork.Action.Where(u => u.FloorId == iid); */ bool cchecker1 = false; if (actions.Any()) { foreach (var Action in actions) { cchecker1 = false; FloorAction obj = new FloorAction { Name = Action.Name, FloorId = (int)iid, A_Material_Cost = 0, Floor = floor }; /*foreach (var o_Action in old_actions) { if (o_Action.Name == obj.Name) { cchecker1 = true; break; } }*/ if (cchecker1 == false) { _unitOfWork.Action.Add(obj); _unitOfWork.save(); } } } /////////////////// IEnumerable new_actions = _unitOfWork.Action.Where(u => u.FloorId == iid); if (new_actions.Any()) { foreach (var action in new_actions) { int id = action.ActionId; ////////////////////////////////// FloorAction act = _unitOfWork.Action.Get(u => u.ActionId == id); string last_c = act.Name[act.Name.Length - 1].ToString(); string nam = ""; if (int.TryParse(last_c, out _) == true) { nam = act.Name.Substring(0, act.Name.Length - 2); } else { nam = act.Name; } int idd = _unitOfWork.DataAction.Get(u => u.Name == nam).DataActionId; IEnumerable tasks = _unitOfWork.TemplateTask.Where(u => u.DataActionId == idd); int f_id = _unitOfWork.Action.Get(u => u.ActionId == id).FloorId; int p_id = _unitOfWork.Floor.Get(u => u.FloorId == f_id).ODCProjectId; ODCProject project = _unitOfWork.ODCProject.Get(u => u.Id == p_id); /////check duplication /*IEnumerable old_tasks = _unitOfWork.Task.Where(u => u.ActionId == id); */ bool checker1 = false; if (tasks != null) { foreach (var Task in tasks) { checker1 = false; ActionTask obj = new ActionTask { Name = Task.Name, ActionId = (int)id, Material_Cost = 0, Labor_Cost = 0, Labor_Rate = 0, Measured_Work = 0, Mat_Lab = 0, Completion = 0, SDate = new DateOnly(2020, 1, 1), Duration = 0 }; /*foreach (var o_Task in old_tasks) { if (o_Task.Name == obj.Name) { checker1 = true; break; } }*/ if (checker1 == false) { _unitOfWork.Task.Add(obj); _unitOfWork.save(); } } } /////////////////////////////////Add properties and materials IEnumerable new_tasks = _unitOfWork.Task.Where(u => u.ActionId == id); if (new_tasks.Any()) { foreach (var task in new_tasks) { int new_id = task.TaskId; /////////////////////// string new_nam = _unitOfWork.Task.Get(u => u.TaskId == new_id).Name; DataTask dataTask = _unitOfWork.DataTask.Get(u => u.Name == new_nam); if (dataTask == null) { // Try without numeric suffix // string last_c = new_nam[new_nam.Length - 1].ToString(); if (new_nam.EndsWith(".") && new_nam.Length > 2) { string checkChar = new_nam[new_nam.Length - 2].ToString(); if (int.TryParse(checkChar, out _)) { new_nam = new_nam.Substring(0, new_nam.Length - 3).Trim(); dataTask = _unitOfWork.DataTask.Get(u => u.Name == new_nam); } } } if (dataTask == null) { TempData["error"] = $"DataTask not found for task: {new_nam}"; continue; // Skip this task } int new_idd = _unitOfWork.DataTask.Get(u => u.Name == new_nam).DataTaskId; IEnumerable new_materials = _unitOfWork.TemplateMaterial.Where(u => u.DataTaskId == new_idd); IEnumerable new_properties = _unitOfWork.TemplateProperty.Where(u => u.DataTaskId == new_idd); int new_a_id = _unitOfWork.Task.Get(u => u.TaskId == new_id).ActionId; int new_f_id = _unitOfWork.Action.Get(u => u.ActionId == new_a_id).FloorId; int new_p_id = _unitOfWork.Floor.Get(u => u.FloorId == new_f_id).ODCProjectId; ODCProject new_project = _unitOfWork.ODCProject.Get(u => u.Id == new_p_id); /////check duplication /*IEnumerable new_old_materials = _unitOfWork.Material.Where(u => u.TaskId == new_id); IEnumerable new_old_properties = _unitOfWork.Property.Where(u => u.TaskId == new_id); */ bool new_checker = false; bool new_checker1 = false; ///// /// if (new_materials.Any()) { foreach (var material in new_materials) { new_checker = false; DataMaterial dbMaterial = _unitOfWork.DataMaterial.Get(u => u.Name == material.Name); if (dbMaterial != null) { int new_iddd = dbMaterial.DataMaterialId; double? new_u_cost = _unitOfWork.DataMaterial.Get(u => u.DataMaterialId == new_iddd).Unit_Cost; Material new_obj = new Material { Name = material.Name, TaskId = new_id, Unit = "Not given", Qty = 0, ODCProjectId = new_p_id, ODCProject = new_project, FloorId = new_f_id, ActionId = new_a_id, Unit_Cost = new_u_cost }; /*if (new_old_materials.Any()) { foreach (var o_material in new_old_materials) { if (o_material.Name == new_obj.Name) { new_checker = true; break; } } }*/ if (new_checker == false) { _unitOfWork.Material.Add(new_obj); _unitOfWork.save(); } } } } if (new_properties.Any()) { foreach (var property in new_properties) { new_checker1 = false; DataProperty dbProperty = _unitOfWork.DataProperty.Get(u => u.Name == property.Name); if (dbProperty != null) { int new_iddd = dbProperty.DataPropertyId; Property new_obj = new Property { Name = property.Name, TaskId = (int)new_id, Description = "Not given", Value = 0, Visible = property.Visible }; if (new_checker1 == false) { _unitOfWork.Property.Add(new_obj); _unitOfWork.save(); } } } } /////////////////////// } } ////////////////////////////////// } } } } ////////////////////////////////////////// return RedirectToAction("Details", "ODCProject", new { area = "Staff", id = ipd }); } [HttpGet] [Authorize(Roles = "Admin")] public IActionResult EditFormula(int id) { TemplateMaterial material = _unitOfWork.TemplateMaterial.Get(u => u.TemplateMId == id); ViewBag.DTask = _unitOfWork.DataTask.Get(u => u.DataTaskId == material.DataTaskId); IEnumerable properties = _unitOfWork.TemplateProperty.Where(u => u.DataTaskId == material.DataTaskId); ViewBag.TProperties = properties; TemplateFormula old_formula = _unitOfWork.TemplateFormula.Get(u => u.TemplateMId == id); ViewBag.Nam = material.Name; if (old_formula == null) { TemplateFormula formula = new TemplateFormula() { TemplateMId = id }; return View(formula); } else { TemplateFormula formula = _unitOfWork.TemplateFormula.Get(u => u.TemplateMId == id); return View(formula); } } [HttpPost] [Authorize(Roles = "Admin")] public IActionResult EditFormula(TemplateFormula obj) { if (ModelState.IsValid) { int temp = obj.TemplateMId; int temp2 = _unitOfWork.TemplateMaterial.Get(u => u.TemplateMId == temp).DataTaskId; if (obj.TemplateFId == 0) { _unitOfWork.TemplateFormula.Add(obj); _unitOfWork.save(); TempData["success"] = "Formula added!"; return RedirectToAction("DTaskDetails", "Data", new { id = temp2 }); } else { _unitOfWork.TemplateFormula.update(obj); _unitOfWork.save(); TempData["success"] = "Formula updated!"; return RedirectToAction("DTaskDetails", "Data", new { id = temp2 }); } } else { TempData["error"] = "Something Wrong!"; return View(obj); } } ////////////////////////// [HttpGet] [Authorize(Roles = "Admin")] public IActionResult EditFormulaP(int id) { TemplateProperty property = _unitOfWork.TemplateProperty.Get(u => u.TemplatePId == id); ViewBag.DTask = _unitOfWork.DataTask.Get(u => u.DataTaskId == property.DataTaskId); IEnumerable properties = _unitOfWork.TemplateProperty.Where(u => u.DataTaskId == property.DataTaskId); ViewBag.TProperties = properties; // Get all data tasks for the cross-task lookup tool ViewBag.AllDataTasks = _unitOfWork.DataTask.GetAll(); TemplateFormulaP old_formulaP = _unitOfWork.TemplateFormulaP.Get(u => u.TemplatePId == id); ViewBag.Nam = property.Name; if (old_formulaP == null) { TemplateFormulaP formulaP = new TemplateFormulaP() { TemplatePId = id, IsCrossTaskFormula = false // Default to false as specified }; return View(formulaP); } else { TemplateFormulaP formulaP = _unitOfWork.TemplateFormulaP.Get(u => u.TemplatePId == id); // If IsCrossTaskFormula is null, it should display as false if (formulaP.IsCrossTaskFormula == null) { formulaP.IsCrossTaskFormula = false; } return View(formulaP); } } [HttpGet] [Authorize(Roles = "Admin")] public JsonResult GetTaskPropertiess(int taskId) { IEnumerable properties = _unitOfWork.TemplateProperty.Where(u => u.DataTaskId == taskId); return Json(properties); } [HttpPost] [Authorize(Roles = "Admin")] public IActionResult EditFormulaP(TemplateFormulaP obj) { if (ModelState.IsValid) { int temp = obj.TemplatePId; int temp2 = _unitOfWork.TemplateProperty.Get(u => u.TemplatePId == temp).DataTaskId; if (obj.TemplateFPId == 0) { _unitOfWork.TemplateFormulaP.Add(obj); _unitOfWork.save(); TempData["success"] = "Formula added!"; return RedirectToAction("DTaskDetails", "Data", new { id = temp2 }); } else { _unitOfWork.TemplateFormulaP.update(obj); _unitOfWork.save(); TempData["success"] = "Formula updated!"; return RedirectToAction("DTaskDetails", "Data", new { id = temp2 }); } } else { TempData["error"] = "Something Wrong!"; return View(obj); } } [HttpGet] [Authorize(Roles = "Admin")] public IActionResult AssignBQProperty(int id) { DataTask task = _unitOfWork.DataTask.Get(u => u.DataTaskId == id); ViewBag.Task = task.Name; //to remove previously assigned property if any MappingBQProperty bQProperty = _unitOfWork.MappingBQProperty.Get(u => u.DTId == task.DataTaskId); if (bQProperty != null) { _unitOfWork.MappingBQProperty.Remove(bQProperty); _unitOfWork.save(); } IEnumerable PropertyList = _unitOfWork.TemplateProperty.Where(u=>u.DataTaskId == id).Select(u => new SelectListItem { Text = u.Name, Value = u.TemplatePId.ToString() }); ViewBag.PropertyList = PropertyList; return View(); } [HttpPost] [Authorize(Roles = "Admin")] public IActionResult AssignBQProperty(string? value) { TemplateProperty tproperty = _unitOfWork.TemplateProperty.Get(u => u.TemplatePId == Convert.ToDouble(value)); if (tproperty != null) { DataTask task = _unitOfWork.DataTask.Get(u => u.DataTaskId == tproperty.DataTaskId); if (task != null) { MappingBQProperty BQProperty = new MappingBQProperty(); BQProperty.TPId = tproperty.TemplatePId; BQProperty.DTId = task.DataTaskId; _unitOfWork.MappingBQProperty.Add(BQProperty); _unitOfWork.save(); TempData["success"] = "Property assigned to BQ successfully!"; return RedirectToAction("DTaskDetails", "Data", new { id = task.DataTaskId }); } else { TempData["error"] = "Data task not found!"; return View(); } } else { TempData["error"] = "Template property not found!"; return View(); } } [HttpGet] [Authorize(Roles = "Admin")] public IActionResult AssignBQPropertyNew(int id) { DataTask task = _unitOfWork.DataTask.Get(u => u.DataTaskId == id); ViewBag.Task = task.Name; IEnumerable PropertyList = _unitOfWork.TemplateProperty.Where(u => u.DataTaskId == id).Select(u => new SelectListItem { Text = u.Name, Value = u.TemplatePId.ToString() }); ViewBag.PropertyList = PropertyList; return View(); } [HttpPost] [Authorize(Roles = "Admin")] public IActionResult AssignBQPropertyNew(string? value) { TemplateProperty tproperty = _unitOfWork.TemplateProperty.Get(u => u.TemplatePId == Convert.ToDouble(value)); if (tproperty != null) { DataTask task = _unitOfWork.DataTask.Get(u => u.DataTaskId == tproperty.DataTaskId); if (task != null) { task.BQPropertyId = value; _unitOfWork.DataTask.update(task); _unitOfWork.save(); TempData["success"] = "Property assigned to BQ successfully!"; return RedirectToAction("DTaskDetails", "Data", new { id = task.DataTaskId }); } else { TempData["error"] = "Data task not found!"; return View(); } } else { TempData["error"] = "Template property not found!"; return View(); } } } }