Пример #1
0
        public void ImportFromExcel(string excelFileName, string dataSheet, InsuranceType insType, bool isCashFlow)
        {
            var govs = _db.Entities
                       .Where(e => e.Identity.Contains(string.Format("{0}(guid'", _db.Governors.RequestUri.PathAndQuery)))
                       .Select(ed => ProxyActivator.CreateProxy <Governor, BLL.Governor>(ed.Entity as Governor)).ToList();
            XlsObject <BLL.AssetValue> parser;

            if (isCashFlow)
            {
                parser = new AssetsCashXlsObject(govs, insType, excelFileName, dataSheet);
            }
            else
            {
                parser = new AssetsValXlsObject(govs, insType, excelFileName, dataSheet);
            }

            var list = parser.SelectAll().Select(val => Newtonsoft.Json.JsonConvert.SerializeObject(val)).ToList();

            UriBuilder urib = new UriBuilder(_db.BaseUri);

            urib.Path = string.Format("{0}/CreateBatch", _db.Assets.RequestUri.PathAndQuery);
            var r = _db.Execute <bool>(urib.Uri, "POST", true
                                       , new System.Data.Services.Client.BodyOperationParameter("Values", list)
                                       ).FirstOrDefault();

            if (!r)
            {
                throw new InvalidOperationException("ImportFromExcel");
            }
        }
Пример #2
0
        public IEnumerable <BLL.AssetValue> GetList(FilterParameterCollection filters, int pageIndex, int pageSize, SortParameterCollection orderBy)
        {
            lock (_db)
            {
                orderBy.DefaultOrder         = defaultSorting;
                orderBy.PropertyNameResolver = propResolver;
                if (filters != null)
                {
                    filters.PropertyNameResolver = propResolver;
                }
                int skip   = pageIndex * pageSize;
                var list   = _db.Assets.AddFilters(filters).AddOrders(orderBy).Skip(skip).Take(pageSize);
                var govCtx = _db.Governors;
                foreach (var m in list)
                {
                    //provide action like '$expand' for Governors
                    var gov = govCtx.GetById(m.GovernorId);
                    if (gov == null)
                    {
                        gov = govCtx.ToList().FirstOrDefault(g => g.Id == m.GovernorId);
                    }
                    m.Governor = gov;

                    yield return(ProxyActivator.CreateProxy <AssetValue, BLL.AssetValue>(m));
                }
            }
        }
Пример #3
0
 public IEnumerable <BLL.Governor> GetList(FilterParameterCollection filters, int pageIndex, int pageSize, SortParameterCollection orderBy)
 {
     lock (_db)
     {
         orderBy.DefaultOrder = defaultSorting;
         int skip = pageIndex * pageSize;
         var list = _db.Governors.AddFilters(filters).AddOrders(orderBy).Skip(skip).Take(pageSize);
         foreach (var m in list)
         {
             yield return(ProxyActivator.CreateProxy <Governor, BLL.Governor>(m));
         }
     }
 }
Пример #4
0
        public IActionResult Post()
        {
            var request = Request.HasFormContentType ? new GatewayCommonRequest(Request.Form) : new GatewayCommonRequest(Request.Body);

            String service = $"{_typeFullName}.Post()";

            _logger.Trace(TraceType.API.ToString(), CallResultStatus.OK.ToString(), service, ":", LogPhase.ACTION, "CPI.Gateway入站请求", request);

            if (!request.IsValid)
            {
                _logger.Trace(TraceType.API.ToString(), CallResultStatus.ERROR.ToString(), service, $"{nameof(request)}.IsValid", LogPhase.ACTION, $"请求参数验证失败:{request.ErrorMessage}", request);
                return(this.Failure(request.AppId, ErrorCode.INVALID_ARGUMENT, request.ErrorMessage));
            }

            if (DateTime.TryParse(request.Timestamp, out DateTime requestTime))
            {
                var now = DateTime.Now;
                if (requestTime < now.AddMinutes(-10) || requestTime > now.AddMinutes(10))
                {
                    return(this.Failure(request.AppId, ErrorCode.INVALID_ARGUMENT, "发送请求的时间不正确"));
                }
            }

            if (!VerifySign(request))
            {
                _logger.Trace(TraceType.API.ToString(), CallResultStatus.ERROR.ToString(), service, "VerifySign(...)", LogPhase.ACTION, "请求参数验签失败");
                return(this.Failure(request.AppId, ErrorCode.SIGN_VERIFY_FAILED));
            }

            var invoker = ProxyActivator.GetInvocation(request);

            if (invoker == null)
            {
                _logger.Trace(TraceType.API.ToString(), CallResultStatus.ERROR.ToString(), service, "ProxyActivator.GetInvocation(...)", LogPhase.ACTION, $"不支持的请求方法:{request.Method}");
                return(this.Failure(request.AppId, ErrorCode.METHOD_NOT_SUPPORT));
            }

            String invokerName = invoker.GetType().FullName;

            _logger.Trace(TraceType.API.ToString(), CallResultStatus.OK.ToString(), service, $"{invokerName}.Invoke()", LogPhase.BEGIN, "开始服务调用");

            var invokeResult = invoker.Invoke();

            _logger.Trace(TraceType.API.ToString(), CallResultStatus.OK.ToString(), service, $"{invokerName}.Invoke()", LogPhase.END, "结束服务调用");

            return(!invokeResult.Success
                 ? this.Failure(request.AppId, invokeResult.ErrorCode, invokeResult.ErrorMessage)
                 : this.Success(request.AppId, invokeResult.Value));
        }
Пример #5
0
 public IEnumerable <BLL.WorkCalendar> GetList(FilterParameterCollection filters, int pageIndex, int pageSize, SortParameterCollection orderBy)
 {
     lock (_db)
     {
         orderBy.DefaultOrder = defaultSorting;
         int skip = pageIndex * pageSize;
         if (filters != null)
         {
             filters.OperatorActionResolver = opResolver;
         }
         var list = _db.Holidays.AddFilters(filters).AddOrders(orderBy).Skip(skip).Take(pageSize);
         foreach (var m in list)
         {
             yield return(ProxyActivator.CreateProxy <WorkCalendar, BLL.WorkCalendar>(m));
         }
     }
 }
Пример #6
0
        public void Update(BLL.AssetValue o)
        {
            var proxy = o as IDtoProxy;

            if (proxy != null)
            {
                Guid govId = o.Governor.Id;
                var  dto   = proxy.Dto as AssetValue;

                if (govId != dto.GovernorId)
                {
                    dto.GovernorId = govId;
                    dto.Governor   = _db.Governors.GetById(govId);
                    o.Governor     = ProxyActivator.CreateProxy <Governor, BLL.Governor>(dto.Governor);
                    //_db.SetLink(dto, "Governor", gov);
                }

                _db.UpdateObject(dto);
                _db.SaveChanges(System.Data.Services.Client.SaveChangesOptions.ReplaceOnUpdate);
            }

            o.GovernorId = o.Governor.Id;
        }
Пример #7
0
 public void Factory_ShouldThrowOnInvalidParam([ValueSource(nameof(BadParamz))] ITuple paramz) =>
 Assert.Throws <MissingMemberException>(() => ProxyActivator.Create(typeof(List <string>)).Invoke(paramz));
Пример #8
0
        public void Factory_ShouldCreateANewInstance([ValueSource(nameof(Paramz))] ITuple paramz)
        {
            List <string> instance = (List <string>)ProxyActivator.Create(typeof(List <string>)).Invoke(paramz);

            Assert.IsNotNull(instance);
        }
Пример #9
0
 public void Create_ShouldBuildAFactory() =>
 Assert.DoesNotThrow(() => ProxyActivator.Create(typeof(List <string>)));