using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using wispro.sp.entity; using wispro.sp.share; namespace wispro.sp.api.Controllers { [Route("api/[controller]/[action]")] [ApiController] public class AppealController : ControllerBase { spDbContext Context; public AppealController(spDbContext context) { Context = context; } public List GetAppealTypes() { return Context.AppealTypes.ToList(); } public List GetInputField(int appealTypeId, int state) { return Context.InputFields .Where(ip => ip.AppealTypeId == appealTypeId && ip.AppealState == state) .Include(p => p.SelectValues) .ToList(); } public IActionResult CreateAppeal(int ItemId, int typeid, int reviewerId, AppealObject appealObject) { AppealRecord appealRecord = new AppealRecord(); appealRecord.ItemId = ItemId; appealRecord.TypeId = typeid; appealRecord.ReviewerId = reviewerId; appealRecord.CreaterId = 11;// Context.Staffs.Where(s => s.Name == User.Identity.Name).FirstOrDefault().Id; appealRecord.CreateTime = DateTime.Now; var t = Context.Database.BeginTransaction(); try { Context.AppealRecords.Add(appealRecord); Context.SaveChanges(); foreach (var fieldValue in appealObject.inputFieldValues) { fieldValue.InputField = null; fieldValue.AppealRecordId = appealRecord.Id; } Context.InputFieldValues.AddRange(appealObject.inputFieldValues); foreach (var file in appealObject.attachFiles) { var temFile = Context.AttachFiles.Where(f => f.Id == file.Id).FirstOrDefault(); temFile.AppealRecordId = appealRecord.Id; } Context.SaveChanges(); t.Commit(); return Ok(); } catch (Exception ex) { t.Rollback(); return BadRequest(ex.Message); } } public List GetAppealRecords(int userId) { var data = Context.AppealRecords.Where(ar => ar.CreaterId == userId || ar.ReviewerId == userId); return data.Include(p => p.Reviewer) .Include(p => p.Creater) .Include(p => p.Item) .Include(p => p.Type).ToList(); } } }