Пример #1
0
        public ActionResult SubmitBidResultByBidder(bool val, int masterId)
        {
            BidResult success = iplSchedule.submitBidResultByBidder(val, masterId, getUser().userId);

            if (success.IsSucceed == 1)
            {
                return(Json(new { data = new Result {
                                      Status = ResultStatus.Success, Message = "Thank you for submitting your bid."
                                  }, favour = success.InFavour, against = success.Against, history = success.BidHistory }, JsonRequestBehavior.AllowGet));
            }
            else if (success.IsSucceed == -2)
            {
                return(Json(new { data = new Result {
                                      Status = ResultStatus.Warning, Message = "Sorry bid is not available."
                                  } }, JsonRequestBehavior.AllowGet));
            }
            else if (success.IsSucceed == -3)
            {
                return(Json(new { data = new Result {
                                      Status = ResultStatus.Error, Message = "Sorry insufficient balance to bid."
                                  } }, JsonRequestBehavior.AllowGet));
            }
            else
            {
                return(Json(new { data = new Result {
                                      Status = ResultStatus.Error, Message = "Error occurred while submitting pole."
                                  } }, JsonRequestBehavior.AllowGet));
            }
        }
Пример #2
0
        public ActionResult SubmitBidResultByBidder(bool val, int masterId)
        {
            BidResult success = iplSchedule.submitBidResultByBidder(val, masterId, getUserID());

            if (success.IsSucceed == 1)
            {
                return(Json(new { data = new Result {
                                      Status = ResultStatus.Success, Message = "Your pole submitted successfully."
                                  }, favour = success.InFavour, against = success.Against, history = success.BidHistory }, JsonRequestBehavior.AllowGet));
            }
            else
            {
                return(Json(new { data = new Result {
                                      Status = ResultStatus.Error, Message = "Error occurred while submitting pole."
                                  } }, JsonRequestBehavior.AllowGet));
            }
        }
Пример #3
0
        public ActionResult DoBid2(BidModel model)
        {
            AuthInfo auth = Session["auth"] as AuthInfo;

            if (auth == null)
            {
                return(Redirect("/auth"));
            }

            Result result = OpenApiClient.Send(LoanController.Get_LoanList_URL, auth.AccessToken,
                                               new PropertyObject("timestamp", DateTime.Now, ValueTypeEnum.DateTime));

            if (result.IsSucess)
            {
                var  loanList = JsonConvert.DeserializeObject <LoanListModels>(result.Context);
                bool isCertificateValidate    = model.Tags.Any(p => p == "CertificateValidate");
                bool isMobileRealnameValidate = model.Tags.Any(p => p == "MobileRealnameValidate");
                bool isRate22        = model.Tags.Any(p => p == "rate22");
                bool isCreditCodeAAA = model.Tags.Any(p => p == "CreditCodeAAA");
                bool isCreditCodeD   = model.Tags.Any(p => p == "CreditCodeD");

                StringBuilder sb = new StringBuilder();

                foreach (var loan in loanList.LoanList.OrderByDescending(p => p.Rate))
                {
                    if (isCertificateValidate && loan.CertificateValidate != 1)
                    {
                        continue;
                    }

                    if (isMobileRealnameValidate && loan.MobileRealnameValidate != 1)
                    {
                        continue;
                    }

                    if (isRate22 && loan.Rate < 22)
                    {
                        continue;
                    }

                    if (isCreditCodeAAA && loan.CreditCode != "AAA")
                    {
                        continue;
                    }

                    if (isCreditCodeD && (loan.CreditCode == "E" || loan.CreditCode == "F"))
                    {
                        continue;
                    }

                    try
                    {
                        Result bidResp = OpenApiClient.Send(Bid_URL, auth.AccessToken,
                                                            new PropertyObject("ListingId", loan.ListingId, ValueTypeEnum.Int32), new PropertyObject("Amount", 50, ValueTypeEnum.Int32));

                        if (bidResp.IsSucess)
                        {
                            BidResult bidResult = JsonConvert.DeserializeObject <BidResult>(bidResp.Context);
                            sb.AppendLine(string.Format("投标:{0}  ,结果: {1}", loan.ListingId, bidResult.ResultMessage));
                        }
                        else
                        {
                            sb.AppendLine(string.Format("投标:{0}  ,结果: {1}", loan.ListingId, bidResp.ErrorMessage));
                        }

                        model.Amount -= 50;
                        if (model.Amount < 50)
                        {
                            break;
                        }
                    }
                    catch (Exception ex) {
                        sb.AppendLine(string.Format("投标:{0}  ,结果: {1}", loan.ListingId, ex.Message));
                    }
                }

                if (sb.Length == 0)
                {
                    return(Content("没有满足条件的标的"));
                }

                return(Content(sb.ToString()));
            }

            return(Content("获取投资列表失败"));
        }
Пример #4
0
        public BidResult submitBidResultByBidder(bool value, int bidId, int userId)
        {
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                SqlDataReader     reader;
                int               success   = -1;
                List <BidHistory> history   = null;
                BidResult         bidResult = new BidResult();
                try
                {
                    connection.Open();
                    SqlCommand command = new SqlCommand("USP_UpdateBidResultByBidder", connection);
                    command.CommandType = CommandType.StoredProcedure;
                    command.Parameters.Add(new SqlParameter("@Value", value));
                    command.Parameters.Add(new SqlParameter("@BidId", bidId));
                    command.Parameters.Add(new SqlParameter("@UserId", userId));
                    reader = command.ExecuteReader();
                    while (reader.Read())
                    {
                        bidResult.IsSucceed = Convert.ToInt32(reader["IsSucceed"]);
                        bidResult.InFavour  = Convert.ToInt32(reader["InFavour"]);
                        bidResult.Against   = Convert.ToInt32(reader["Against"]);
                        if (bidResult.IsSucceed == 1)
                        {
                            history = new List <BidHistory>();
                            if (reader.NextResult())
                            {
                                while (reader.Read())
                                {
                                    BidHistory bidHistory = new BidHistory();
                                    string     teamA      = reader["TeamA"].ToString();
                                    string     teamB      = reader["TeamB"].ToString();

                                    bidHistory.Match = teamA + " VS " + teamB;
                                    if (reader["Team"].ToString() == "A")
                                    {
                                        bidHistory.Question = teamA + " : " + reader["Question"].ToString();
                                    }
                                    else
                                    {
                                        bidHistory.Question = teamB + " : " + reader["Question"].ToString();
                                    }
                                    bidHistory.Points = reader["BidPoints"].ToString();
                                    bool answer = Convert.ToBoolean(reader["UserBid"].ToString());
                                    if (answer)
                                    {
                                        bidHistory.Answer = "Yes";
                                    }
                                    else
                                    {
                                        bidHistory.Answer = "No";
                                    }
                                    history.Add(bidHistory);
                                }
                            }
                        }
                    }
                    bidResult.BidHistory = history;
                }
                catch (Exception ex)
                {
                }
                return(bidResult);
            }
        }
Пример #5
0
        private async Task UpdateProtocols(Region region)
        {
            int orgsCount = 0;
            await _ftpService.LoadProtocolsFromFtp(region);

            var protocols = _xmlParsingService.ParseProtocols(region);

            if (protocols.Any())
            {
                var partcipantsInns = protocols
                                      .SelectMany(p => p.Organizations)
                                      .Select(o => o.Organization.INN)
                                      .ToList();

                var participants = await _dataContext.Organizations
                                   .Where(o => partcipantsInns.Contains(o.INN))
                                   .ToListAsync();

                var companies = await _dataContext.Companies
                                .Where(o => partcipantsInns.Contains(o.INN))
                                .Where(o => !o.OrganizationId.HasValue)
                                .ToListAsync();

                var purchaseNumbers = protocols
                                      .Select(p => p.PurchaseNumber)
                                      .ToList();

                var tenders = await _dataContext.Tenders
                              .Where(t => purchaseNumbers.Contains(t.PurchaseNumber))
                              .ToListAsync();

                var tendersIds = tenders.Select(t => t.Id).ToList();

                var existingBidResults = await _dataContext.BidResults
                                         .Where(b => tendersIds.Contains(b.TenderId))
                                         .Include(b => b.Organizations)
                                         .ThenInclude(o => o.Organization)
                                         .ToListAsync();

                var regions = await _dataContext.Regions
                              .ToListAsync();

                foreach (var protocol in protocols)
                {
                    var tender    = tenders.SingleOrDefault(t => t.PurchaseNumber == protocol.PurchaseNumber);
                    var bidResult = new BidResult();

                    if (tender != null)
                    {
                        bidResult = existingBidResults.SingleOrDefault(br => br.TenderId == tender.Id) ?? new BidResult();
                    }


                    _mapper.Map(protocol, bidResult);

                    bidResult.Tender = tender;
                    bidResult.Organizations ??= new List <BidResultOrganization>();
                    bidResult.Organizations.Clear();
                    if (protocol.Organizations != null)
                    {
                        foreach (var app in protocol.Organizations)
                        {
                            var participant = participants
                                              .SingleOrDefault(o => o.INN == app.Organization.INN && o.KPP == app.Organization.KPP)
                                              ?? new Organization();

                            _mapper.Map(app.Organization, participant);

                            if (!participant.RegionId.HasValue)
                            {
                                participant.RegionId = GetRegionIdByParticipant(participant, regions);
                            }

                            if (_dataContext.Entry(participant).State == EntityState.Modified)
                            {
                                participant.UpdateChangeInfo();
                            }

                            if (participant.Id == default && !participants.Any(o => o.INN == participant.INN && o.KPP == participant.KPP) &&
                                !string.IsNullOrEmpty(participant.INN))
                            {
                                orgsCount += 1;
                                participants.Add(participant);
                                participant.UpdateChangeInfo();
                                await _dataContext.Organizations.AddAsync(participant);
                            }

                            var company = companies.Where(c => c.INN == participant.INN)
                                          .SingleOrDefault();

                            if (company != null)
                            {
                                company.Organization = participant;
                            }

                            var orgBidresult = _mapper.Map <BidResultOrganization>(app);
                            orgBidresult.Organization = participant;
                            if (!string.IsNullOrEmpty(participant.INN))
                            {
                                bidResult.Organizations.Add(orgBidresult);
                            }
                        }
                    }

                    if (tender != null && bidResult.Id == default && !existingBidResults.Any(br => br.Tender == bidResult.Tender))
                    {
                        if (_dataContext.Entry(tender).State == EntityState.Modified)
                        {
                            bidResult.Tender.UpdateChangeInfo();
                        }

                        bidResult.Tender.Status = TenderStatus.ENDED;
                        existingBidResults.Add(bidResult);
                        await _dataContext.AddAsync(bidResult);
                    }
                }
            }


            await _dataContext.UpdateTendersHistories.AddAsync(new UpdateTendersHistory
            {
                RegionId      = region.Id,
                SearchDate    = DateTime.Now.Date,
                SearchType    = SearchType.PROTOCOLS,
                Organizations = orgsCount
            });

            await _dataContext.SaveChangesAsync();

            _ftpService.ClearTempDirectories();
        }