예제 #1
0
        public void GetFilingData_Values_Success(string name)
        {
            RunInitSql(name, "ConnectionStringFilings");

            GetFilingData request = PrepareRequest <GetFilingData>(name);

            GetFilingDataResponse response = Post <GetFilingData, GetFilingDataResponse>("GetFilingData", request);

            RunFinalizeSql(name, "ConnectionStringFilings");

            Assert.AreEqual(response.Success, true, "GetFilingData call failed");
            Assert.AreNotEqual(response.Payload.FilingData.Count, 0, "Empty listof values returned");
        }
        public object Any(GetFilingData request)
        {
            DateTime dtStart = DateTime.UtcNow;

            _logger.Log(EErrorType.Info, " ****** Call start: GetFilingData");

            GetFilingDataResponse response = new GetFilingDataResponse();

            TransferHeader(request, response);

            EErrorCodes valSession = ValidateSession(request.SessionToken);

            if (valSession == EErrorCodes.Success)
            {
                try
                {
                    Interfaces.DAL.GetCompanyFilingParams filingDataParams = new Interfaces.DAL.GetCompanyFilingParams(request.Values.ToArray())
                    {
                        CompanyCode   = request.CompanyCode,
                        Name          = request.FilingName,
                        RegulatorCode = request.RegulatorCode
                    };

                    Interfaces.DAL.GetCompanyFilingResult filingDataResult = _dal.GetCompanyFilingData(filingDataParams);

                    response.Payload.CompanyCode   = request.CompanyCode;
                    response.Payload.RegulatorCode = request.RegulatorCode;
                    if (filingDataResult.FilingInfo != null)
                    {
                        response.Payload.FilingName  = filingDataResult.FilingInfo.Name;
                        response.Payload.PeriodStart = filingDataResult.FilingInfo.PeriodStart;
                        response.Payload.PeriodEnd   = filingDataResult.FilingInfo.PeriodEnd;
                        response.Payload.Submitted   = filingDataResult.FilingInfo.Submitted;
                        response.Payload.Type        = filingDataResult.FilingInfo.Type;

                        foreach (var fd in filingDataResult.Data)
                        {
                            if (fd.Value != null)
                            {
                                response.Payload.FilingData.Add(new DTO.FilingNumRecord()
                                {
                                    Code        = fd.Code,
                                    Value       = (decimal)fd.Value,
                                    UnitName    = fd.Unit,
                                    PeriodEnd   = fd.PeriodEnd,
                                    PeriodStart = fd.PeriodStart,
                                    FactId      = fd.FactId
                                });
                            }
                            else if (fd.Value_Str != null)
                            {
                                response.Payload.FilingStrData.Add(new DTO.FilingStrRecord()
                                {
                                    Code        = fd.Code,
                                    Value       = fd.Value_Str,
                                    PeriodEnd   = fd.PeriodEnd,
                                    PeriodStart = fd.PeriodStart,
                                    FactId      = fd.FactId
                                });
                            }
                            else if (fd.Value_Dttm != null)
                            {
                                response.Payload.FilingDttmData.Add(new DTO.FilingDttmRecord()
                                {
                                    Code        = fd.Code,
                                    Value       = (DateTime)fd.Value_Dttm,
                                    PeriodEnd   = fd.PeriodEnd,
                                    PeriodStart = fd.PeriodStart,
                                    FactId      = fd.FactId
                                });
                            }
                        }

                        if (response.Payload.FilingData.Count == 0)
                        {
                            response.Payload.FilingData = null;
                        }
                        if (response.Payload.FilingStrData.Count == 0)
                        {
                            response.Payload.FilingStrData = null;
                        }


                        response.Success = true;
                    }
                    else
                    {
                        response.Success = false;
                        response.Errors.Add(new Error()
                        {
                            Code    = EErrorCodes.SubmissionNotFound,
                            Type    = EErrorType.Error,
                            Message = "Filing not found"
                        });
                    }
                }
                catch (Exception ex)
                {
                    _logger.Log(ex);
                    response.Success = false;
                    response.Errors.Add(new Error()
                    {
                        Code = EErrorCodes.GeneralError, Type = EErrorType.Error, Message = string.Format("Unpexcted error: {0}", ex.Message)
                    });
                }
            }
            else
            {
                response.Success = false;
                response.Errors.Add(new Error()
                {
                    Code = EErrorCodes.InvalidSession, Type = EErrorType.Error, Message = string.Format("Invalid session")
                });
            }

            DateTime dtEnd = DateTime.UtcNow;

            _logger.Log(EErrorType.Info, string.Format(" ****** Call end: GetFilingData\tTime:{0}", dtEnd - dtStart));

            return(response);
        }