| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209 |
- using GreenTree.Nachtragsmanagement.Core.Domain.Deviation;
- using GreenTree.Nachtragsmanagement.Services.Appendix;
- using GreenTree.Nachtragsmanagement.Services.Deviation;
- using GreenTree.Nachtragsmanagement.Services.Site;
- using GreenTree.Nachtragsmanagement.Services.User;
- using GreenTree.Nachtragsmanagement.Web.Framework.Authorization;
- using GreenTree.Nachtragsmanagement.Web.Models.Site;
- using Newtonsoft.Json;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- using System.Web.Mvc;
- namespace GreenTree.Nachtragsmanagement.Web.Controllers
- {
- public class SiteController : Controller
- {
- private readonly ISiteService _siteService;
- private readonly IDeviationService _deviationService;
- private readonly IAppendixService _appendixService;
- private readonly IUserService _userService;
- public SiteController(
- ISiteService siteService,
- IDeviationService deviationService,
- IAppendixService appendixService,
- IUserService userService)
- {
- _siteService = siteService;
- _deviationService = deviationService;
- _appendixService = appendixService;
- _userService = userService;
- ViewData["AllSite"] = _siteService.GetAllSites();
- }
- #region Sites
- /// <summary>
- /// Basic site view function
- /// </summary>
- [FunctionAuthorize(true, "Site-Sites")]
- public ActionResult ViewSites()
- {
- var sites = _siteService.GetAllSites();
- var siteModels = sites
- .Select(u => SiteDataModel.FromSite(u, false))
- .ToList();
- return View("~/Views/Sites/View.cshtml", siteModels);
- }
- /// <summary>
- /// Get JSON data of specific site
- /// </summary>
- /// <param name="id">Site id.</param>
- public ActionResult GetSite(int id = -1)
- {
- var site = _siteService.GetSiteById(id);
- if (site == null)
- return new JsonResult
- {
- Data = "notFound",
- JsonRequestBehavior = JsonRequestBehavior.AllowGet
- };
- var siteModel = SiteDataModel.FromSite(site, false);
- var siteTreeModel = SiteTreeDataModel.TreeFromSite(site);
- siteModel.SiteTreeData = siteTreeModel;
-
- return new JsonResult
- {
- Data = JsonConvert.SerializeObject(siteModel),
- JsonRequestBehavior = JsonRequestBehavior.AllowGet
- };
- }
- /// <summary>
- /// Callback result for site grid
- /// </summary>
- public ActionResult PartialSites()
- {
- var sites = _siteService.GetAllSites();
- var siteModels = sites
- .Select(u => SiteDataModel.FromSite(u, false))
- .ToList();
- return PartialView("~/Views/Sites/_SiteGridPartial.cshtml", siteModels);
- }
- /// <summary>
- /// Callback result for site appendices
- /// </summary>
- /// <param name="siteId">Id of site.</param>
- public ActionResult PartialDeviationAppendices(int siteId)
- {
- var site = _siteService.GetSiteById(siteId);
- var siteModel = SiteDataModel.FromSite(site, false);
- var siteTreeModel = SiteTreeDataModel.TreeFromSite(site);
- siteModel.SiteTreeData = siteTreeModel;
- return PartialView("~/Views/Sites/_SiteEditTreePartial.cshtml", siteModel);
- }
- /// <summary>
- /// Partial edit for editing of existing or for new site
- /// </summary>
- /// <param name="id">Id for existing site, otherweise -1.</param>
- public ActionResult EditSite(int id = -1)
- {
- var site = _siteService.GetSiteById(id);
- var siteModel = SiteDataModel.FromSite(site, true);
- var siteTreeModel = SiteTreeDataModel.TreeFromSite(site);
- siteModel.SiteTreeData = siteTreeModel;
- return PartialView("~/Views/Sites/_SiteEditPartial.cshtml", siteModel);
- }
- /// <summary>
- /// Partial edit result if ModelState is valid, otherwise simple JSON result for success
- /// </summary>
- /// <param name="siteModel">Site model to be saved.</param>
- [HttpPost, ValidateInput(false)]
- public ActionResult EditSite(SiteDataModel siteModel)
- {
- if (!ModelState.IsValid)
- {
- //foreach (var deviation in siteModel.DeviationValues)
- // siteModel.DeviationDescriptions.Add(
- // ((IList<Deviation>)ViewData["AllDeviations"])
- // .First(r => r.Id == deviation).Description);
- //foreach (var deviation in siteModel.DeviationValues)
- // siteModel.DeviationDescriptions.Add(
- // ((IList<Deviation>)ViewData["AllDeviations"])
- // .First(r => r.Id == deviation).Description);
- //foreach (var deviation in siteModel.DeviationValues)
- // siteModel.DeviationDescriptions.Add(
- // ((IList<Deviation>)ViewData["AllDeviations"])
- // .First(r => r.Id == deviation).Description);
- return PartialView("~/Views/Sites/_SiteEditPartial.cshtml", siteModel);
- }
- var selectedDeviations = _deviationService.GetDeviationsByIds(siteModel.DeviationValues.ToArray());
- var selectedAppendices = _appendixService.GetAppendicesByIds(siteModel.AppendixValues.ToArray());
- var selectedUsers = _userService.GetUsersByIds(siteModel.UserValues.ToArray());
- if (siteModel.Id == -1)
- {
- var site = siteModel.ToSite();
- site.SetDeviations(selectedDeviations);
- site.SetAppendices(selectedAppendices);
- site.SetUsers(selectedUsers);
- _siteService.InsertSite(site);
- }
- else
- {
- var site = _siteService.GetSiteById(siteModel.Id);
- site.CustomNumber = siteModel.CustomNumber;
- site.Description = siteModel.Description;
- site.Start = siteModel.Start;
- site.End = siteModel.End;
- site.Comment = siteModel.Comment;
- site.SetDeviations(selectedDeviations);
- site.SetAppendices(selectedAppendices);
- site.SetUsers(selectedUsers);
- _siteService.UpdateSite(site);
- }
- return new JsonResult
- {
- Data = "success"
- };
- }
- /// <summary>
- /// Simple JSON result for deleting a specific site
- /// </summary>
- /// <param name="id">Site id.</param>
- [HttpPost]
- public ActionResult DeleteSite(int id)
- {
- var site = _siteService.GetSiteById(id);
- if (site != null)
- _siteService.DeleteSite(site);
- return new JsonResult
- {
- Data = "success"
- };
- }
- #endregion
- }
- }
|