예제 #1
0
        protected override async Task <ResponseApi> AddMiddlewareExecuted(UserFileInfo obj)
        {
            base.GetBase64(obj);
            if (string.IsNullOrEmpty(obj.Base64))
            {
                ResponseApi response1 = ResponseApi.Create(GetLanguage(), Code.UploadFileFail, false);
                return(await Task.FromResult(response1));
            }
            obj = this.AddMiddlewareExecute(obj);
            var parent = base.UnitWork.FindSingle <UserFileInfo>(it => it.Base64 == obj.Base64);

            if (parent == null)
            {
                obj.Id = (int)base.UnitWork.Insert(obj);
                System.IO.File.WriteAllBytes($"{AddressConfig.UploadImgDirectory}\\{ obj.Src}", /*obj.Base64*/ Base64Helper.FromBase64String(obj.Base64));
                obj = (UserFileInfo)obj.Clone();
            }
            else
            {
                obj.Parent = parent;
                obj.Base64 = null;
            }
            obj.FileId = RandomHelper.OrderId.Sha1();
            obj.Src    = $"{RandomHelper.OrderId.Sha1()}.{obj.Parent.Src.Split('.').LastOrDefault()}";
            obj.Id     = (int)base.UnitWork.Insert(obj);
            var userFileEntry = this._userFileService.ToUserFileEntry(obj);

            this._userFileService.Publish(userFileEntry);
            ResponseApi response = ResponseApi.Create(GetLanguage(), Code.AddSuccess);

            response.Data = new { obj.Src, Id = obj.FileId };
            return(await Task.FromResult(response));
        }
예제 #2
0
        protected virtual AdminInfo GetAdminInfo()
        {
            string key = HttpContext.Request.Headers["token"];

            if (string.IsNullOrEmpty(key))
            {
                return(null);                          //throw new AuthNotFoundException(ResponseApi.Create((GetLanguage(), Code.AuthFail).Message);
            }
            //string value = key.AesDecrypt(Core.AesKey, Core.AesIv);
            //string account = value.Split('_')[0];
            var data = this.Cache.Get <AdminInfo>(key);

            if (data == null)
            {
                var tokenStr = RedisCache.GetString(key);
                if (string.IsNullOrEmpty(tokenStr))
                {
                    throw new AuthNotFoundException(ResponseApi.Create(GetLanguage(), Code.AuthFail).Message);
                }
                data = tokenStr.ToObject <AdminInfo>();
                if (data.LoginDate.Value.AddHours(24) < DateTime.Now.AddMinutes(-5))
                {
                    throw new AuthNotFoundException(ResponseApi.Create(GetLanguage(), Code.TokenExpires).Message);
                }
                Cache.Set <AdminInfo>(key, data, data.LoginDate.Value.AddHours(24));
            }
            return(data);
        }
예제 #3
0
        /// <summary>
        /// 添加 或修改 数据之前验证
        /// </summary>
        /// <param name="obj"></param>
        /// <param name="way"></param>
        /// <returns></returns>
        protected virtual async Task <ResponseApi> Validate(T obj, int way = 0)
        {
            if (IsCustomValidator)
            {
                var error = ValidateHelper.ValidateError(typeof(T), obj, way);
                if (error == null || error.Data == null)
                {
                    Dictionary <string, List <string> > customErrors = new Dictionary <string, List <string> >();
                    customErrors = await this.CustomValidate(customErrors, obj, way);

                    if (customErrors.Count > 0)
                    {
                        ResponseApi response = ResponseApi.Create(GetLanguage(), Code.ParamError, false);
                        response.Data = new { Error = customErrors };
                        return(await Task.FromResult(response));
                    }
                    return(await Task.FromResult <ResponseApi>(null));
                }
                else
                {
                    Dictionary <string, List <string> > errors = ((Dictionary <string, Dictionary <string, List <string> > >)error.Data)["Error"];
                    errors = await CustomValidate(errors, obj, way);

                    // error.Data = new { Error = customErrors };
                }
                return(error);
            }
            return(await Task.FromResult <ResponseApi>(null));
        }
예제 #4
0
        public IActionResult Partners()
        {
            var context = CompanyDbContext;
            var data    = context.Brands.Where(it => it.Enable.HasValue && it.Enable.Value && it.Feature == null).Include(it => it.Logo)
                          .Join(context.Categories.Where(it => it.Enable.HasValue && it.Enable.Value).Include(it => it.BackgroundImage), it => it.Category.Id, it => it.Id, (it, it1) => new
            {
                CategoryInfo = (CategoryInfo)it1.Clone(),
                it           = new BrandInfo()
                {
                    Href     = it.Href,
                    Src      = it.Logo.Name,
                    Category = it1
                }
            })
                          .ToList();
            var temp = new List <CategoryInfo>(data.Count);

            foreach (var item in data)
            {
                var it = temp.Find(it => it.Id == item.CategoryInfo.Id);
                if (it == null)
                {
                    it = item.CategoryInfo;
                    temp.Add(it);
                    it.OurPartners = new List <BrandInfo>();
                }
                it.OurPartners.Add(item.it);
            }
            var respone = ResponseApi.Create(Language.Chinese, Code.QuerySuccess);

            respone.Data = temp.FirstOrDefault();
            return(new JsonResult(respone));
        }
예제 #5
0
        public IActionResult Service()
        {
            var context = CompanyDbContext;
            var data    = context.Services.Where(it => it.Enable.HasValue && it.Enable.Value).Include(it => it.Img).Join(context.Categories.Where(it => it.Enable.HasValue && it.Enable.Value), it => it.Category.Id, it => it.Id, (it, it1) => new
            {
                CategoryInfo = (CategoryInfo)it1.Clone(),
                it           = new ServiceInfo()
                {
                    Name               = it.Name,
                    EnglishName        = it.EnglishName,
                    Description        = it.Description,
                    EnglishDescription = it.EnglishDescription,
                    Src      = it.Img.Name,
                    Category = it1
                }
            })
                          .ToList();
            var temp = new List <CategoryInfo>(data.Count);

            foreach (var item in data)
            {
                var it = temp.Find(it => it.Id == item.CategoryInfo.Id);
                if (it == null)
                {
                    it = item.CategoryInfo;
                    temp.Add(it);
                    it.Services = new List <ServiceInfo>();
                }
                it.Services.Add(item.it);
            }
            var respone = ResponseApi.Create(Language.Chinese, Code.QuerySuccess);

            respone.Data = temp.FirstOrDefault();
            return(new JsonResult(respone));
        }
예제 #6
0
        public static void GetProjects(Action <List <ProjectItem> > onFinish = null, bool onlyMobile = false)
        {
            string     url             = onlyMobile ? ApiRoutes.MobileProjects : ApiRoutes.Projects;
            RequestApi requestProjects = new RequestApi(url);

            requestProjects.TimeOut = 10f;

            requestProjects.OnFinish = response =>
            {
                ResponseApi projectsResponse = (ResponseApi)response;
                if (!Helper.IsResponseGood(projectsResponse))
                {
                    Logger.Fatal($"Can not get {url}");
                    onFinish?.Invoke(null);
                    return;
                }

                string projectsJson = projectsResponse.Data.ToString();

                var projects = projectsJson.JsonDeserializeList <ProjectItem>();
                onFinish?.Invoke(projects);
            };

            requestProjects.OnError = s =>
            {
                Debug.LogError($"Can't get projects list: {s}");

                onFinish?.Invoke(null);
            };
        }
예제 #7
0
        public async Task <ResponseApi> RoleRequired()
        {
            ResponseApi response = ResponseApi.Create(GetLanguage(), Code.QuerySuccess);

            response.Data = base.Test ? false : true;
            return(await Task.FromResult(response));
        }
예제 #8
0
        public ActionResult UpdateCall(Call call)
        {
            ResponseApi <Call> response = new ResponseApi <Call>();

            response.Data = call;
            try
            {
                if (call.Id > 0)
                {
                    dao.Update(call, call.Id);
                    response.Message = "Call update success";
                    response.Data    = call;

                    this._logger.LogInformation(response.Message);
                    return(Ok(response));
                }

                response.Message = "Call not valid";
                this._logger.LogInformation(response.Message);
                return(BadRequest(response));
            }
            catch (Exception e)
            {
                response.Message = "Sorry, the API throws one error, the object it was not persisted";
                this._logger.LogError(response.Message, e);
                return(StatusCode(StatusCodes.Status500InternalServerError, response));
            }
        }
예제 #9
0
        public ActionResult TrackerCall([FromBody] Call call)
        {
            ResponseApi <Call> response = new ResponseApi <Call>();

            response.Data = call;
            try
            {
                if (this.IsValidTrackerCall(call))
                {
                    call.DateSaved = DateTime.Now.ToString();
                    dao.Save(call);
                    response.Message = "Call persisted success";
                    this._logger.LogInformation(response.Message);
                    return(Ok(response));
                }
                else
                {
                    response.Message = "Call not valid";
                    this._logger.LogInformation(response.Message);
                    return(BadRequest(response));
                }
            }
            catch (Exception e)
            {
                response.Message = "Sorry, the API throws one error, the object it was not persisted";
                this._logger.LogError(response.Message, e);
                return(StatusCode(StatusCodes.Status500InternalServerError, response));
            }
        }
예제 #10
0
        public async Task <ResponseApi> Required()
        {
            ResponseApi response = ResponseApi.Create(GetLanguage(), Code.QuerySuccess);

            response.Data = base.Test ? false : base.AuthrizeValidator.RoleRequired(GetUserId());
            return(await Task.FromResult(response));
        }
예제 #11
0
        public IActionResult Vote(UserVote objPost)
        {
            string vout = string.Empty;
            ResponseApi <dynamic> response = new ResponseApi <dynamic>();

            #region Check validation if every required field are given
            Validation objValidation = new Validation();
            vout = objValidation.ValidVote(objPost);
            #endregion
            if (vout.Contains("OK"))
            {
                DateTime utcDate = DateTime.UtcNow;

                objPost.ActionDate = utcDate;
                objPost.ActionType = "INSERT";

                response = _iAuthentication.UserVote(objPost);
            }
            else
            {
                response.Status  = "FAILED";
                response.Message = vout;
                response.Result  = null;
            }

            return(Ok(response));
        }
예제 #12
0
        public virtual async Task <ResponseApi> Edit([FromForm] T obj)
        {
            // obj.Create =true;
            if (Request.ContentType != null)
            {
                if (Request.ContentType.Contains("application/json"))
                {
                    using (System.IO.StreamReader reader = new System.IO.StreamReader(Request.Body))
                    {
                        Ref(ref obj, reader.ReadToEnd());
                    }
                }
                else if (Request.ContentType.Contains("text/xml"))
                {
                    using System.IO.StreamReader reader = new System.IO.StreamReader(Request.Body);
                    Type          t          = typeof(T);
                    XmlSerializer serializer = new XmlSerializer(t);
                    obj = serializer.Deserialize(reader) as T;
                }
            }
            this.EditMiddleExecet(obj);
            // this.ActionParamParse(Request, ref obj);
            var old = this.Repository.FindSingle(it => it.Id == obj.Id);

            obj.CreateDate = old.CreateDate;
            obj.ModifyDate = DateTime.Now;
            this.Repository.Update(obj);
            return(await Task.FromResult(ResponseApi.Create(GetLanguage(), Code.ModifySuccess)));
        }
예제 #13
0
 public virtual async Task <ResponseApi> Add([FromForm] T obj)
 {
     if (Request.ContentType != null)
     {
         if (Request.ContentType.Contains("application/json"))
         {
             using (System.IO.StreamReader reader = new System.IO.StreamReader(Request.Body))
             {
                 Ref(ref obj, reader.ReadToEnd());
             }
         }
         else if (Request.ContentType.Contains("text/xml"))
         {
             using System.IO.StreamReader reader = new System.IO.StreamReader(Request.Body);
             Type          t          = typeof(T);
             XmlSerializer serializer = new XmlSerializer(t);
             obj = serializer.Deserialize(reader) as T;
         }
     }
     this.AddMiddleExecet(obj);
     obj.CreateDate = DateTime.Now;
     // this.ActionParamParse(Request, ref obj);
     this.Repository.Insert(obj);
     return(await Task.FromResult(ResponseApi.Create(GetLanguage(), Code.AddSuccess)));
 }
예제 #14
0
        public virtual async Task <ResponseApi <ResultModel <T> > > Query([FromForm, FromBody] T obj, int?page, int?size)
        {
            PageHelper.Set(ref page, ref size);
            if (Request.ContentType != null)
            {
                if (Request.ContentType.Contains("application/json"))
                {
                    using (System.IO.StreamReader reader = new System.IO.StreamReader(Request.Body))
                    {
                        Ref(ref obj, reader.ReadToEnd());
                    }
                }
                else if (Request.ContentType.Contains("text/xml"))
                {
                    using System.IO.StreamReader reader = new System.IO.StreamReader(Request.Body);
                    Type          t          = typeof(T);
                    XmlSerializer serializer = new XmlSerializer(t);
                    obj = serializer.Deserialize(reader) as T;
                }
            }

            // this.ActionParamParse(Request,ref obj);
            ResponseApi <ResultModel <T> > responseApi = ResponseApi <ResultModel <T> > .Create(GetLanguage(), Code.QuerySuccess);

            responseApi.Data        = new ResultModel <T>();
            responseApi.Data.Data   = QueryList(obj, page, size);
            responseApi.Data.Result = new PageModel()
            {
                Page = 1, Size = 10, Records = responseApi.Data.Data == null?0: responseApi.Data.Data.Count
            };
            responseApi.Data.Result.Total = responseApi.Data.Result.Records == 0 ? 1:responseApi.Data.Result.Records % 10 == 0? responseApi.Data.Result.Records / 10:(responseApi.Data.Result.Records / 10) + 1;
            return(await Task.FromResult(responseApi));
        }
예제 #15
0
        public virtual async Task <ResponseApi> Get()
        {
            ResponseApi ResponseApi = ResponseApi.CreateSuccess(GetLanguage());

            ResponseApi.Data = this.Query().ToList();
            return(await Task.FromResult <ResponseApi>(ResponseApi));
        }
예제 #16
0
        public async Task <ResponseApi <List <Call> > > GetListCallAsync()
        {
            Stopwatch stopwatch = new Stopwatch();

            stopwatch.Start();
            CancellationTokenSource cancellationToken = new CancellationTokenSource();

            cancellationToken.CancelAfter(_limitCancellationToken);
            string path = $"{_url}{_resourceGetNotRecorded}/{_limitRecordsAPI}";

            try
            {
                HttpResponseMessage response = await httpClient.GetAsync(path, cancellationToken.Token)
                                               .ConfigureAwait(false);

                string responseString = await response.Content.ReadAsStringAsync().ConfigureAwait(false);

                ResponseApi <List <Call> > listCalls = JsonConvert
                                                       .DeserializeObject <ResponseApi <List <Call> > >(responseString);

                stopwatch.Stop();
                _logger.Info($"Obtido lista de chamdas rastreáveis no recurso {path} em " +
                             $"{stopwatch.ElapsedMilliseconds} ms");

                return(listCalls);
            }
            catch (Exception e)
            {
                String messageError = $"Error ao obter a lista de chamadas rastreáveis no recurso {path}";
                stopwatch.Stop();
                _logger.Error(messageError, e);
                throw new Exception(messageError, e);
            }
        }
예제 #17
0
        public static void GetAndUpdateServerSettings(Action <bool> onFinish = null)
        {
            RequestApi requestServerSettings = new RequestApi(ApiRoutes.ServerConfig);

            requestServerSettings.TimeOut = 10f;

            requestServerSettings.OnFinish = response =>
            {
                ResponseApi settingsResponse = (ResponseApi)response;
                if (!Helper.IsResponseGood(settingsResponse))
                {
                    Logger.Fatal($"Can not get {ApiRoutes.ServerConfig}");
                    onFinish?.Invoke(true);
                    return;
                }

                Settings.UpdateSettings(settingsResponse.Data.ToString());

                onFinish?.Invoke(true);
            };

            requestServerSettings.OnError = s =>
            {
                Debug.LogError($"Can't get server settings: {s}");

                onFinish?.Invoke(false);
            };
        }
예제 #18
0
        public async Task <ResponseApi <Call> > AlterCallToUsedAsync(Call call)
        {
            Stopwatch stopwatch = new Stopwatch();

            stopwatch.Start();

            try
            {
                string                  callJson          = JsonConvert.SerializeObject(call);
                HttpContent             content           = new StringContent(callJson, Encoding.UTF8, "application/json");
                string                  path              = BuildUri(call);
                CancellationTokenSource cancellationToken = BuildCancellationToken();

                HttpResponseMessage response = await httpClient.PutAsync(path, content, cancellationToken.Token)
                                               .ConfigureAwait(false);

                ResponseApi <Call> responseBody = await BuildResponseAsync(response).ConfigureAwait(false);

                stopwatch.Stop();
                _logger.Info($"Atualizado a Call {call} no recurso {path} em {stopwatch.ElapsedMilliseconds} ms");

                return(responseBody);
            }
            catch (Exception e)
            {
                String messageError = $"Error ao atualizar a Call {call}";
                stopwatch.Stop();
                _logger.Error(messageError, e);
                throw new Exception(messageError, e);
            }
        }
예제 #19
0
        public async Task <ResponseApi> Logout()
        {
            AdminInfo admin = GetAdminInfo();

            if (base.RedisCache.RemoveKey(admin.Token))
            {
                base.Logger.LogInformation($"该账户{admin.Account}退出成功,删除token {admin.Token}成功");
                // return await Task.FromResult(new Utility.Response() { Message = "退出成功!", Code = (int)Code.退出成功 });
            }
            else
            {
                base.Logger.LogWarning($"该账户{admin.Account}登录退出失败,删除token {admin.Token}失败");
                ResponseApi response = ResponseApi.CreateError(GetLanguage());
                return(await Task.FromResult(response));
            }
            if (RedisCache.RemoveHash("accounts", admin.Account))
            {
                base.Logger.LogInformation($"该账户{admin.Account}退出成功,该账户{admin.Account}缓存删除成功,token {admin.Token}");
                ResponseApi response = ResponseApi.Create(GetLanguage(), Code.LogoutSuccess);
                return(await Task.FromResult(response));
            }
            else
            {
                base.Logger.LogWarning($"登录退出失败,该账户{admin.Account}缓存删除失败,token {admin.Token}");
                ResponseApi response = ResponseApi.CreateError(GetLanguage());
                return(await Task.FromResult(response));
            }
        }
예제 #20
0
 public virtual ResponseApi Add([FromForm] T obj)
 {
     if (Request.ContentType.Contains("application/json"))
     {
         using (System.IO.StreamReader reader = new System.IO.StreamReader(Request.Body))
         {
             // Ref(ref obj, reader.ReadToEnd());
             Ref(ref obj, reader.ReadToEndAsync().Result);//类库影响
         }
     }
     else if (Request.ContentType.Contains("text/xml"))
     {
         using System.IO.StreamReader reader = new System.IO.StreamReader(Request.Body);
         Type          t          = typeof(T);
         XmlSerializer serializer = new XmlSerializer(t);
         obj = serializer.Deserialize(reader) as T;
     }
     //if (!ModelState.IsValid)
     //{
     //    return ResponseApi.Fail();
     //}
     obj.CreateDate = DateTime.Now;
     this.Repository.Insert(obj);
     return(ResponseApi.CreateSuccess());
 }
예제 #21
0
 public override async Task <ResponseApi> Add([FromForm] ServiceInfo obj)
 {
     obj.Create = true;
     if (Request.Form.Files.Count == 1)
     {
         var file = Request.Form.Files[0];
         if (file.Name != "img")
         {
             return(await Task.FromResult(ResponseApi.Create(GetLanguage(), Code.UploadFileFail)));
         }
         using Stream stream = file.OpenReadStream();
         byte[] buffer = new byte[stream.Length];
         stream.Read(buffer, 0, buffer.Length);
         string suffix = file.FileName.Split('.').LastOrDefault();
         var    name   = $"{RandomHelper.Id}.{suffix}";
         System.IO.File.WriteAllBytes(Core.UploadDirectory + "\\" + Core.UploadService + "\\" + name, buffer);
         obj.Img = new ImageInfo()
         {
             Name   = RandomHelper.Id,
             Href   = $"{RandomHelper.Id}.{suffix}",
             Src    = name,
             Create = true,
             Type   = Core.Service
         };
     }
     else
     {
         return(await Task.FromResult(ResponseApi.Create(GetLanguage(), Code.UploadFileFail)));
     }
     this.AddMiddleExecet(obj);
     obj.CreateDate = DateTime.Now;
     base.Repository.Insert(obj);
     return(await Task.FromResult(ResponseApi.Create(GetLanguage(), Code.AddSuccess)));
 }
예제 #22
0
 public async Task <ResponseApi> Delete([FromQuery] string index, [FromQuery] string type, [FromQuery] string id)
 {
     if (string.IsNullOrEmpty(index))
     {
         return(await Task.FromResult(ResponseApi.Create(Language.Chinese, Code.ParamNotNull)));
     }
     else
     {
         if (string.IsNullOrEmpty(type) && string.IsNullOrEmpty(id))
         {
             this._elasticsearchDatabase.DeleteDatabase(index);
         }
         else if (string.IsNullOrEmpty(type) && !string.IsNullOrEmpty(id))
         {
             this._elasticsearchDatabase.Delete(index, id);
         }
         else if (!string.IsNullOrEmpty(type) && string.IsNullOrEmpty(id))
         {
             this._elasticsearchDatabase.Delete(index, type, "{\"query\":{\"match_all\":{}}}");
         }
         else
         {
             this._elasticsearchDatabase.Delete(index, type, id);
         }
         ResponseApi response = ResponseApi.Create(Language.Chinese, Code.DeleteSuccess);
         return(await Task.FromResult(response));
     }
 }
예제 #23
0
        public IActionResult Testimonial()
        {
            var context = CompanyDbContext;
            var data    = context.TestimonialPersons.Where(it => it.Enable.HasValue && it.Enable.Value).Include(it => it.PersonPic).Join(context.Categories.Where(it => it.Enable.HasValue && it.Enable.Value), it => it.Category.Id, it => it.Id, (it, it1) => new
            {
                CategoryInfo = (CategoryInfo)it1.Clone(),
                it           = (TestimonialPersonInfo)it.Clone()
            })
                          .ToList();
            var temp = new List <CategoryInfo>(data.Count);

            foreach (var item in data)
            {
                var it = temp.Find(it => it.Id == item.CategoryInfo.Id);
                if (it == null)
                {
                    it = item.CategoryInfo;
                    temp.Add(it);
                    it.Testimonials = new List <TestimonialPersonInfo>();
                }
                it.Testimonials.Add(item.it);
            }
            var respone = ResponseApi.Create(Language.Chinese, Code.QuerySuccess);

            respone.Data = temp.FirstOrDefault();
            return(new JsonResult(respone));
        }
예제 #24
0
        private void MockService()
        {
            List <Employee> employees   = EmployeeDataObject.CreateEmployee();
            ResponseApi     responseApi = EmployeeDataObject.CreateResponseApi(employees);

            employeeService.GetEmployees().Returns(Task.FromResult(responseApi));
        }
예제 #25
0
        async Task CreateUser()
        {
            string ResultValidator = ValidatorForm();

            if (ResultValidator == "")
            {
                CreateUser Createusero = new CreateUser()
                {
                    data = new Data_RequestCreateUser()
                    {
                        user = new UserCreate()
                        {
                            numberDoc = NumberDocument, name = Name, lastName = LastName, email = Email, password = Password
                        }
                    }
                };
                ResponseApi resultr = MA.CreateUser(Createusero);

                if (resultr.msg != null)
                {
                    await App.Current.MainPage.DisplayAlert("Create User", resultr.msg.msg, "Ok");

                    ClearForm();
                }
                else
                {
                    //error por falta de internet o api no disponible
                    await App.Current.MainPage.DisplayAlert("Create User", "check your internet connection", "Ok");
                }
            }
            else
            {
                await App.Current.MainPage.DisplayAlert("Create User Error", ResultValidator, "Ok");
            }
        }
예제 #26
0
        protected override void DeleteBefore(int id)
        {
            MenuInfo menu = UnitWork.FindSingle <MenuInfo>(it => it.Id == id);

            if (menu == null)
            {
                throw new IdNotFoundException(ResponseApi.Create(GetLanguage(), Code.IdNotFound, false).Message);
            }
            if (menu.Id == menu.Parent.Id)
            {
                if (menu.Children.Count > 1)
                {
                    throw new CascadeException(ResponseApi.Create(GetLanguage(), Code.CascadeDeleteFail, false).Message);
                }
            }
            else
            {
                Func <MenuInfo, MenuInfo> func = (it) => {
                    it.OrderNo -= 1;
                    return(it);
                };
                UnitWork.Find <MenuInfo>(it => it.OrderNo > menu.OrderNo).Update(it => func(it));
            }
            base.DeleteBefore(id);
        }
예제 #27
0
        protected virtual async Task <ResponseApi> DefaultQuery(F query, int?page, int?size)
        {
            IQueryable <T> queryable = this.Query();
            //树形列表查询 无条件则可以 树形列表查询 有条件取消
            List <NHibernate.Criterion.AbstractCriterion> wheres = new List <NHibernate.Criterion.AbstractCriterion>();
            List <NHibernate.Criterion.AbstractCriterion> ands   = new List <NHibernate.Criterion.AbstractCriterion>();
            bool res    = this.QueryFilterByOr(ref wheres, query);
            bool andRes = this.QueryFilterByAnd(ands, query);

            if (andRes)
            {
                res = true;
            }
            List <T> data  = null;
            int      total = 0;

            if (res)
            {
                //模糊查询
                using (NHibernate.ISession session = HttpContext.RequestServices.GetService <NHibernate.ISession>())
                {
                    NHibernate.ICriteria criteria = session.CreateCriteria <T>();
                    NHibernate.Criterion.AbstractCriterion abstractCriterion = wheres.Any() ? wheres[0] : ands[0];
                    for (int i = wheres.Any() ? 0 : 1; i < ands.Count; i++)
                    {
                        abstractCriterion &= ands[i];
                    }
                    for (int i = 1; i < wheres.Count; i++)
                    {
                        abstractCriterion |= wheres[i];
                    }

                    criteria = criteria.Add(abstractCriterion);
                    NHibernate.ICriteria pageCriteria = (NHibernate.ICriteria)criteria.Clone();
                    total = pageCriteria.SetProjection(Projections.RowCount()).UniqueResult <int>();
                    OrderBy(ref criteria);
                    data = criteria.SetFirstResult((page.Value - 1) * size.Value).SetMaxResults(size.Value).List <T>().ToList();
                    //数据不规则整理成树形列表信息 如果断层了 断层的下级的成为上级
                    data = this.DataParseIfWhileReference(data, true);
                }
            }
            else
            {
                data  = this.QueryChildFilter(queryable, query).OrderBy(it => it.CreateDate).Skip((page.Value - 1) * size.Value).Take(size.Value).ToList();
                total = queryable.ToFutureValue(it => it.Count()).Value;
                //树形列表查询 去递归引用 automapper 才能正常运行 否则异常
                data = this.DataParseIfWhileReference(data);
            }
            ResultModel <G> result = new ResultModel <G>();

            result.Data   = data.Any() ? ObjectMapper.Map <List <G> >(data) : null;
            result.Result = new PageModel()
            {
                Total = total, Size = size.Value, Page = total == 0 ? 0 : total % size.Value == 0 ? total / size.Value : (total / size.Value + 1)
            };
            ResponseApi response = ResponseApi.Create(GetLanguage(), Code.QuerySuccess);

            response.Data = result;
            return(await Task.FromResult(response));
        }
예제 #28
0
        protected override void DeleteBefore(int[] id)
        {
            IQueryable <MenuInfo> query = UnitWork.Find <MenuInfo>(null);

            foreach (var item in id)
            {
                query = query.Where(it => it.Id == item);
            }
            List <MenuInfo> datas = query.ToList();

            foreach (var item in datas)
            {
                if (item.Id == item.Parent.Id)
                {
                    if (item.Children.Any())
                    {
                        throw new CascadeException(ResponseApi.Create(GetLanguage(), Code.CascadeDeleteFail, false).Message);
                    }
                }
                Func <MenuInfo, MenuInfo> func = (it) => {
                    it.OrderNo -= 1;
                    return(it);
                };
                UnitWork.Find <MenuInfo>(it => it.OrderNo > item.OrderNo).Update(it => func(it));
            }
            base.DeleteBefore(id);
        }
예제 #29
0
        public virtual async Task <ResponseApi> Operator()
        {
            ResponseApi response = ResponseApi.Create(GetLanguage(), Code.QuerySuccess);

            response.Data = AuthrizeValidator.GetOperatorAuthrize(GetUserId(), this.PageName);
            return(await Task.FromResult(response));
        }
예제 #30
0
        public ResponseApi GetData()
        {
            ResponseApi response1 = ResponseApi.Create(GetLanguage(), Code.QuerySuccess);

            response1.Data = base.Cache.Get(Core.FileChannel);
            return(response1);
        }