コード例 #1
0
        public async Task <IActionResult> OnGetAsync(int?rid)
        {
            if (rid == null)
            {
                return(NotFound());
            }
            Record record = await _context.Record.FirstOrDefaultAsync(m => m.rid == rid);

            if (record == null)
            {
                return(NotFound());
            }


            if (record.InterviewID != 0)
            {
                InterviewTime interview = await _context.Time.FirstOrDefaultAsync(r => r.ID == record.InterviewID);

                if (interview != null)
                {
                    interview.Students.Remove(record.rid);
                    interview.NowNum--;

                    await _context.SaveChangesAsync();
                }
                record.InterviewID   = 0;
                record.InterviewTime = null;
                await _context.SaveChangesAsync();
            }

            return(RedirectToPage("../Records/index"));
        }
コード例 #2
0
        public static int SendQueRenSms(Record record, InterviewTime interview)
        {
            Credential cred = new Credential
            {
                SecretId  = "*******************",
                SecretKey = "**********************"
            };

            ClientProfile clientProfile = new ClientProfile();
            HttpProfile   httpProfile   = new HttpProfile();

            httpProfile.Endpoint      = ("sms.tencentcloudapi.com");
            clientProfile.HttpProfile = httpProfile;

            SmsClient      client = new SmsClient(cred, "ap-nanjing", clientProfile);
            SendSmsRequest req    = new SendSmsRequest();

            req.PhoneNumberSet   = new String[] { "+86" + record.phone };
            req.TemplateID       = "724175";
            req.SmsSdkAppid      = "1400410910";
            req.Sign             = "EVA记录";
            req.TemplateParamSet = new String[] { record.name, interview.Day + " " + interview.BeginTime, interview.Place + "室" };

            SendSmsResponse resp = client.SendSmsSync(req);

            if (resp.SendStatusSet[0].Code == "Ok")
            {
                return(1);
            }
            else
            {
                return(0);
            }
        }
コード例 #3
0
        public async Task <IActionResult> OnPostAsync(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            InterviewTime = await _context.Time.FindAsync(id);

            if (InterviewTime != null)
            {
                if (InterviewTime.Students.Count() > 0)
                {
                    foreach (var x in InterviewTime.Students)
                    {
                        Record record = await _context.Record.FirstOrDefaultAsync(r => r.rid == x);

                        record.InterviewID   = 0;
                        record.InterviewTime = null;
                        await _context.SaveChangesAsync();
                    }
                }
                _context.Time.Remove(InterviewTime);
                await _context.SaveChangesAsync();
            }

            return(RedirectToPage("./Index"));
        }
コード例 #4
0
        // To protect from overposting attacks, enable the specific properties you want to bind to, for
        // more details, see https://aka.ms/RazorPagesCRUD.
        public async Task <IActionResult> OnPostAsync()
        {
            if (!ModelState.IsValid)
            {
                return(Page());
            }
            InterviewTime.Students = new List <int>();
            if (CreateTwo)
            {
                string        anotherPlace = InterviewTime.Place == "200" ? "204" : "200";
                InterviewTime tmp          = await _context.Time.FirstOrDefaultAsync(r => r.Place == anotherPlace && r.Day == InterviewTime.Day && InterviewTime.BeginTime == r.BeginTime);

                if (tmp == null)
                {
                    InterviewTime interviewTimeSecond = new InterviewTime()
                    {
                        Day       = InterviewTime.Day,
                        BeginTime = InterviewTime.BeginTime,
                        Place     = anotherPlace,
                        TakenNum  = InterviewTime.TakenNum,
                        Chief     = InterviewTime.Chief,
                        SendSMS   = InterviewTime.SendSMS,
                        NowNum    = 0,
                        Students  = new List <int>()
                    };
                    _context.Add(interviewTimeSecond);
                    await _context.SaveChangesAsync();
                }
            }
            _context.Time.Add(InterviewTime);
            await _context.SaveChangesAsync();

            return(RedirectToPage("./Index"));
        }
コード例 #5
0
        public async Task <IActionResult> OnGetAsync(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }
            Record = await _context.Record.FirstOrDefaultAsync(r => r.rid == id);

            IQueryable <Record> tmp = from r in _context.Record
                                      where r.id_student == Record.id_student
                                      orderby r.addedDate descending
                                      select r;

            Records = await tmp.ToListAsync();


            if (Record.InterviewID > 0)
            {
                InterviewTime interview = await _context.Time.FirstOrDefaultAsync(r => r.ID == Record.InterviewID);

                Record.InterviewTime = $"{interview.Day} {interview.BeginTime}";
            }
            else
            {
                Record.InterviewTime = $"暂无数据";
            }
            if (Record == null)
            {
                return(NotFound());
            }
            return(Page());
        }
コード例 #6
0
        // To protect from overposting attacks, enable the specific properties you want to bind to, for
        // more details, see https://aka.ms/RazorPagesCRUD.
        public async Task <IActionResult> OnPostAsync()
        {
            if (!ModelState.IsValid)
            {
                return(Page());
            }

            InterviewTime interview = await _context.Time.AsNoTracking().FirstOrDefaultAsync(r => r.ID == InterviewTime.ID);

            InterviewTime.Students = new List <int>();
            foreach (var x in interview.Students)
            {
                InterviewTime.Students.Add(x);
            }

            _context.Attach(InterviewTime).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!InterviewTimeExists(InterviewTime.ID))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(RedirectToPage("./Index"));
        }
コード例 #7
0
        public async Task <IActionResult> OnGetAsync(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            InterviewTime = await _context.Time.FirstOrDefaultAsync(m => m.ID == id);

            if (InterviewTime == null)
            {
                return(NotFound());
            }
            return(Page());
        }
コード例 #8
0
        public async Task <IActionResult> OnPostAsync(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            Record = await _context.Record.FindAsync(id);


            if (Record != null)
            {
                if (!DeleteAll)
                {
                    if (Record.InterviewID != 0)
                    {
                        InterviewTime interviewTime = await _context.Time.FirstOrDefaultAsync(r => r.ID == Record.InterviewID);

                        if (interviewTime.NowNum > 0)
                        {
                            interviewTime.NowNum -= 1;
                        }
                        interviewTime.Students.Remove(Record.rid);
                        await _context.SaveChangesAsync();
                    }
                    _context.Record.Remove(Record);
                    await _context.SaveChangesAsync();
                }
                else
                {
                    foreach (var x in _context.Record)
                    {
                        if (x.name == Record.name && x.id_student == Record.id_student && x.sex == Record.sex && x.phone == Record.phone)
                        {
                            _context.Record.Remove(x);
                        }
                    }
                    await _context.SaveChangesAsync();
                }
            }

            return(RedirectToPage("./Index"));
        }
コード例 #9
0
        private string GetRecommendTime(int rid)
        {
            Record record = _context.Record.FirstOrDefault(r => r.rid == rid);

            if (record == null)
            {
                return("NOT FOUND");
            }
            List <int> Times     = new List <int>(record.Times);
            int        remaining = -1;
            int        TimeID    = 0;

            foreach (int x in Times)
            {
                InterviewTime interview = _context.Time.FirstOrDefault(r => r.ID == x);
                if (interview == null)
                {
                    continue;
                }
                if (interview.TakenNum - interview.NowNum > remaining)
                {
                    remaining = interview.TakenNum - interview.NowNum;
                    TimeID    = x;
                }
            }
            if (remaining > 0)
            {
                //the most remaining interview place
                InterviewTime interview = _context.Time.FirstOrDefault(r => r.ID == TimeID);
                return(interview.Day + " " + interview.BeginTime + " " + interview.Place + " " + "剩余" + (interview.TakenNum - interview.NowNum).ToString() + "人");
            }
            else
            {
                return("NOT FOUND");
            }
        }
コード例 #10
0
        public async Task <IActionResult> OnGetAsync(int?id, string SelectDay)
        {
            if (id == null)
            {
                return(NotFound());
            }

            TimeDtos = await _context.Time.OrderBy(r => r.Day).ThenBy(r => r.BeginTime).ThenBy(r => r.Place).Select(r => new TimeDto
            {
                ID        = r.ID,
                Day       = r.Day,
                BeginTime = r.BeginTime,
                Place     = r.Place
            }).ToListAsync();

            Oldid  = (int)id;
            Record = await _context.Record.FirstOrDefaultAsync(m => m.rid == id);

            if (Record == null)
            {
                return(NotFound());
            }

            foreach (var x in TimeDtos)
            {
                if (Record.Times == null)
                {
                    break;
                }
                if (Record.Times.Contains(x.ID))
                {
                    x.IsChoose = true;
                }
            }

            if (Record.InterviewID > 0)
            {
                InterviewTime interview = await _context.Time.FirstOrDefaultAsync(r => r.ID == Record.InterviewID);

                this.SelectDay  = interview.Day;
                this.SelectTime = interview.BeginTime + " " + interview.Place + " 剩余" + (interview.TakenNum - interview.NowNum).ToString();
            }

            IQueryable <string> Day = from m in _context.Time
                                      select m.Day;

            DayList = new  SelectList(await Day.Distinct().OrderBy(r => r).ToListAsync());
            if (SelectDay != null)
            {
                //if user is not admin only show the user choosed time
                IEnumerable <InterviewTime> contains = _context.Time;
                if (User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Name).Value != "纳新系统管理员")
                {
                    contains = contains.Where(r => Record.Times.Contains(r.ID));
                }

                IEnumerable <string> onlyShowChoose = contains.Where(m => m.Day == SelectDay).Where(m => m.TakenNum != m.NowNum).Select(m => m.BeginTime + " " + m.Place + " 剩余" + (m.TakenNum - m.NowNum).ToString());

                EtcList        = new SelectList(onlyShowChoose.Distinct());
                this.SelectDay = SelectDay;
            }
            //get recommendTime to choose
            RecommendTime = GetRecommendTime(Record.rid);

            return(Page());
        }
コード例 #11
0
        // To protect from overposting attacks, enable the specific properties you want to bind to, for
        // more details, see https://aka.ms/RazorPagesCRUD.
        public async Task <IActionResult> OnPostAsync()
        {
            if (!ModelState.IsValid)
            {
                return(Page());
            }
            //添加日期
            if (SelectDay != null && SelectTime != null)
            {
                //注意剩余前面的那个空格!
                SelectTime = SelectTime.Substring(0, SelectTime.IndexOf(" 剩余"));
                InterviewTime interviewTime = await _context.Time.FirstOrDefaultAsync(r => r.Day == SelectDay && r.BeginTime + " " + r.Place == SelectTime);

                if (interviewTime != null)
                {
                    if (interviewTime.NowNum == interviewTime.TakenNum)
                    {
                        return(RedirectToPage("../Error"));
                    }

                    InterviewTime oldTime = null;
                    foreach (var x in _context.Time)
                    {
                        try
                        {
                            if (x.Students.Contains(Record.rid))
                            {
                                oldTime = x;
                                break;
                            }
                        }
                        catch (NullReferenceException e)
                        {
                            throw e;
                        }
                    }
                    if (oldTime != null)
                    {
                        if (oldTime.NowNum > 0)
                        {
                            oldTime.NowNum -= 1;
                        }
                        oldTime.Students.Remove(Record.rid);
                        await _context.SaveChangesAsync();
                    }
                    interviewTime.NowNum += 1;
                    interviewTime.Students.Add(Record.rid);
                    await _context.SaveChangesAsync();

                    Record.InterviewID   = interviewTime.ID;
                    Record.InterviewTime = $"{SelectDay} {interviewTime.BeginTime}";
                }
            }
            //重新赋值
            var record = _context.Record.AsNoTracking().Where(r => r.rid == Record.rid).FirstOrDefault();

            Record.status    = record.status;
            Record.addedDate = record.addedDate;
            Record.ip        = record.ip;
            Record.strguid   = record.strguid;
            Record.Times     = new List <int>();
            foreach (var x in TimeDtos)
            {
                if (x.IsChoose)
                {
                    Record.Times.Add(x.ID);
                }
            }

            _context.Attach(Record).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!RecordExists(Record.rid))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(RedirectToPage("./Index"));
        }
コード例 #12
0
        public async Task <IActionResult> OnPostAsync()
        {
            int    rid    = Record.rid;
            Record record = await _context.Record.FirstOrDefaultAsync(r => r.rid == rid);

            if (PullResponse)
            {
                try
                {
                    await GetSMSResponse(Record.id_student, Record.phone);
                }
                catch (Exception e)
                {
                    throw (e);
                }
                return(RedirectToPage("./SMS", new { id = Record.rid }));
            }
            SMS sms = new SMS()
            {
                id_student = record.id_student,
                sendTime   = DateTime.Now,

                OperatorName = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Name).Value
            };

            if (yuyue)
            {
                int ans = TencentSMS.SendYuYueSMS(record);
                sms.Status = ans;
                sms.type   = "预约时间";
                _context.Sms.Add(sms);
                await _context.SaveChangesAsync();
            }
            else if (queren)
            {
                InterviewTime interview = await _context.Time.FirstOrDefaultAsync(r => r.ID == record.InterviewID);

                if (interview == null)
                {
                    sms.Status = 0;
                    sms.type   = "未选择面试时间";
                }
                else
                {
                    int ans = TencentSMS.SendQueRenSms(record, interview);
                    sms.Status = ans;
                    sms.type   = "确认时间";
                }

                _context.Sms.Add(sms);
                await _context.SaveChangesAsync();
            }
            else if (zuizhong)
            {
                if (record.status == Status.Pending)
                {
                    sms.Status = 0;
                    sms.type   = "面试结果还未确认";
                }
                else if (record.status == Status.Fail)
                {
                    int ans = TencentSMS.SendFailSMS(record);
                    sms.Status = ans;
                    sms.type   = "发送失败短信";
                }
                _context.Sms.Add(sms);
                await _context.SaveChangesAsync();
            }
            return(await OnGetAsync(rid));
        }
コード例 #13
0
        public async Task OnGetAsync(int?pageId)
        {
            PageId       = pageId ?? 1;
            SearchString = SearchString ?? string.Empty;
            SearchString = SearchString.Trim();
            IQueryable <Record> recordQuery;


            if (SearchString != string.Empty)
            {
                long _studentId = 0;
                long.TryParse(SearchString, out _studentId);
                if (_studentId > 0)
                {
                    // means searchstring is student_id_number
                    recordQuery = from r in _context.Record
                                  where r.id_student == SearchString
                                  orderby r.addedDate descending
                                  select r;
                }
                else
                {
                    //means searchstring is name
                    recordQuery = from r in _context.Record
                                  where r.name == SearchString
                                  orderby r.addedDate descending
                                  select r;
                }
            }
            else
            {
                recordQuery = from r in _context.Record
                              orderby r.addedDate descending
                              select r;
            }
            //筛选每个人最近的一次提交
            if (SearchString == string.Empty)
            {
                recordQuery = recordQuery
                              .Where(t1 => !_context.Record.Any(t2 => t2.id_student == t1.id_student && t2.addedDate > t1.addedDate));
            }

            if (EtcId > 0)
            {
                recordQuery = from r in recordQuery
                              where r.InterviewID == EtcId
                              select r;
            }
            (Record, PageCount) = await PaginatedList <Record> .CreateAsync(recordQuery.AsNoTracking(), PageId, pageSize);

            foreach (var x in Record)
            {
                if (x.InterviewID > 0)
                {
                    InterviewTime interviewTime = await _context.Time.FirstOrDefaultAsync(r => r.ID == x.InterviewID);

                    if (interviewTime != null)
                    {
                        x.InterviewTime = $"{interviewTime.Day} {interviewTime.BeginTime} {interviewTime.Place}";
                    }
                    else
                    {
                        x.InterviewTime = "暂无数据";
                    }
                }
                else
                {
                    x.InterviewTime = "暂无数据";
                }
            }
        }