مراحل تعریف کلاس در معماری جدید
1- ایجاد کلاس Test در Domain
using NNP.Infrastructure.Abstractions; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ~.Domain { public class Test: ModelBase, IValidatableObject { //Field list // public int Field1 { get; set; } // public int Field2 { get; set; } public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) { List<ValidationResult> errors = new List<ValidationResult>(); return errors; } } public class TestParam { // public int Field1 { get; set; } // public int Field2 { get; set; } // ... } }
2- ایجاد کلاس اینترفیس ITestRepository در Repository.Contracts
using ~.Domain; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using NNP.Infrastructure.Abstractions; namespace ~.Repository.Contracts { public interface ITestRepository { Task<IEnumerable< Test>> List(TestParam model); //Task<Test> Info(ParamInfo Param); //Task<int> Update(Test model); } }
3- ایجاد کلاس TestRepository در Repository.Implements
using ~.Domain; using ~.Repository.Contracts; using NNP.Infrastructure.Abstractions; using NNP.Infrastructure.Abstractions.Utilities; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ~.Repository.Implements { public class TestRepository :ITestRepository { private readonly IDapperQueryExecution _QueryExecution; public TestRepository(IDapperQueryExecution queryExecution) { _QueryExecution = queryExecution; } public Task<IEnumerable<Test>> List(TestParam model) { return NNPCommon.ListQuery<Test, TestParam>(model, NNPConstant.RowCount, NNPConstant.noSerialOutPut, StoredProc.Test.sp_~TestList, _QueryExecution); } /* public Task<Test> Info(ParamInfo Param) { return NNPCommon.InfoQuery<Test, ParamInfo>(Param, NNPConstant.noRowCount, NNPConstant.noSerialOutPut, StoredProc.Test.sp_~TestInfo, _QueryExecution); } */ /* public Task<int> Update(Test model) { return NNPCommon.UpdateQuery<Test>(model, NNPConstant.noRowCount, NNPConstant.SerialOutPut, StoredProc.Test.sp_~TestUpdate, _QueryExecution); } */ } }
4- ایجاد کلاس Test در Service.Model
using ~.Domain; using NNP.Infrastructure.Abstractions; using NNP.Infrastructure.Abstractions.Utilities; using NNP.Infrastructure.Services.WebApi.Messages; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ~.Service.Models { public class TestRequest { public Test Data { get; set; } // public ContactList ListParam { get; set; } // public ContactList ListParam { get; set; } public TestList ListParam { get; set; } public ParamInfo InfoParam { get; set; } public TestParam ConvertParam() { return NNPCommon.AutoMap<Service.Models.TestList, Domain.TestParam>(ListParam); } } public class TestList : ParamBase //برای ورودی لیست و جستجو { // public long Field1 { get; set; } // public int Field2 { get; set; } } public class TestResponse : ResponseBase<Test> // برای خروجی { public IEnumerable<Test> List { get; set; } public Test Data { get; set; } } }
5- ایجاد کلاس اینترفیس ITestService در Service.Contracts
using ~.Service.Models; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ~.Service.Contracts { public interface ITestService { Task<TestResponse> List(TestRequest model); //Task<TestResponse> Info(TestRequest model); //Task<TestResponse> Update(TestRequest model); } }
6- ایجاد کلاس TestService در Service.Implements
using ~.Service.Contracts; using ~.Service.Models; using Microsoft.AspNetCore.Cors; using Microsoft.AspNetCore.Mvc; using System.Threading.Tasks; namespace ~.WepApi.Controllers { [EnableCors] [Route("api/ExpTest")] [ApiController] public class TestController : ControllerBase { ITestService _TestService; public TestController(ITestService TestService) { _TestService = TestService; } [Route("list")] [HttpPost] public async Task<IActionResult> list(TestRequest Request) { return Ok(await _TestService.List(Request)); } /* [Route("info")] [HttpPost] public async Task<IActionResult> Info(TestRequest Request) { return Ok(await _TestService.Info(Request)); } */ /* public async Task<TestResponse> Update(TestRequest model) { var userId = new ApplicationUser(HttpContext.Current.User).Id; model.Data.PersonnelRef = NNPUtility.MakeInt(userId.ToString()); int Serial = await _Repository.Update(model.Data); if (model.Data.SpMode == "INS") { var uploadModel = new UploadDTO() { TableXRef = Serial, ListUpload = model.ListUpload, }; var status = await _ApiService.CallApiUploadTableXref(uploadModel); if (status.IsSuccess == false) { return new TestResponse() { Serial = Serial, Message = new UnSuccessfullSaveResponseMessage(ResponseMessageTexts.UNSUCCESSFULLUpload_SAVE, ResponseMessagePriority.Low), }; } } return new TestResponse() { Serial = Serial, Message = new SuccessfullGetResponseMessage(ResponseMessageTexts.SUCCESSFULL_SAVE, ResponseMessagePriority.Low), }; } */ } }
7- ایجاد کلاس کنترلر TestController در WepApi.Controllers
using ~.Service.Contracts; using ~.Service.Models; using Microsoft.AspNetCore.Cors; using Microsoft.AspNetCore.Mvc; using System.Threading.Tasks; namespace ~.WepApi.Controllers { [EnableCors] [Route("api/ExpTest")] [ApiController] public class TestController : ControllerBase { ITestService _TestService; public TestController(ITestService TestService) { _TestService = TestService; } [Route("list")] [HttpPost] public async Task<IActionResult> list(TestRequest Request) { return Ok(await _TestService.List(Request)); } /* [Route("info")] [HttpPost] public async Task<IActionResult> Info(TestRequest Request) { return Ok(await _TestService.Info(Request)); } [Route("insert")] [HttpPost] public async Task<IActionResult> insert(TestRequest Request) { return Ok(await _TestService.Update(Request)); } [Route("update")] [HttpPost] public async Task<IActionResult> Update(TestRequest Request) { return Ok(await _TestService.Update(Request)); } [Route("delete")] [HttpPost] public async Task<IActionResult> Delete(TestRequest Request) { return Ok(await _TestService.Update(Request)); } */ } }