示例#1
0
        //[AllowAnonymous]
        public async Task <ActionResult <LeaveItemResponse> > ProViewLeaves([FromBody] ViewLeavesRequest request)
        {
            var pro_id = Int32.Parse(User.Identity.Name);

            if (await UserAccessor.CheckRole(pro_id) == Constants.Role.Student)
            {
                return(BadRequest(new { message = "ProViewLeaves is not for students." }));
            }

            var start = (request.pagenum - 1) * request.pagesize;
            var end   = request.pagenum * request.pagesize;
            LeaveItemResponse leaves = new LeaveItemResponse();

            leaves.pagenum   = request.pagenum;
            leaves.leavelist = new System.Collections.Generic.List <LeaveResponse>();

            var leave_list = await LeaveAccessor.ProViewLeaves(pro_id);

            if (leave_list != null)
            {
                for (int i = start; i < end && i < leave_list.total; i++)
                {
                    LeaveResponse lr = _mapper.Map <LeaveResponse>(leave_list.leaveItem[i]);
                    lr.student_name = await UserAccessor.GetUserName(lr.student_id);

                    lr.work_name = await WorkAccessor.GetWorkName(lr.work_id);

                    leaves.leavelist.Add(lr);
                }
                leaves.total = leave_list.total;
                return(Ok(leaves));
            }
            return(Ok(-1)); // Never arrive there
        }
示例#2
0
        public async Task <int> Getresign([FromBody] FindworkRequest request)
        {
            //判断request里是否满足前置条件
            if (!ModelState.IsValid)
            {
                return(-1);
            }
            var user_id = Int32.Parse(User.Identity.Name);

            if (await UserAccessor.CheckRole(user_id) != Role.Student)
            {
                return(-2);
            }
            TakesEntity entity = new TakesEntity();

            entity.work_id    = request.work_id;
            entity.student_id = user_id;
            MessageEntity temp_entity = new MessageEntity();
            var           work_name   = await WorkAccessor.GetWorkName(request.work_id);

            var student_name = await UserAccessor.GetUserName(user_id);

            temp_entity.message_type = 0;
            temp_entity.content      = student_name + "同学辞去" + work_name + "工作。";
            temp_entity.sender_id    = user_id;
            temp_entity.receiver_id  = await WorkAccessor.GetTeacher(request.work_id);

            var num = await TakesAccessor.GetRegion(entity);

            await MessageAccessor.Create(temp_entity, 1);

            return(num);
        }
示例#3
0
        //[AllowAnonymous]
        public async Task <ActionResult <WorkItemResponse> > ViewHistoryWork([FromBody] ViewWorkRequest request)
        {
            var pro_id = Int32.Parse(User.Identity.Name);

            if (await UserAccessor.CheckRole(pro_id) == Role.Student)
            {
                return(BadRequest(new { message = "ViewHistoryWork is not for students. Students please try ViewOwnWork." }));
            }

            WorkItemResponse workItem = new WorkItemResponse();
            var start = (request.pagenum - 1) * request.pagesize;
            var end   = request.pagenum * request.pagesize;

            workItem.totalpage = start;
            workItem.pagenum   = request.pagenum;
            workItem.worklist  = new List <WorkResponse>();
            var provide_list = await WorkAccessor.FindHistoryWork(pro_id);

            if (provide_list != null)
            {
                for (int i = start; i < end && i < provide_list.total; ++i)
                {
                    WorkResponse wr = _mapper.Map <WorkResponse>(provide_list.workItem[i]);
                    workItem.worklist.Add(wr);
                }
                workItem.totalpage = provide_list.total;
                return(Ok(workItem));
            }
            return(Ok(-1)); // Never arrive there
        }
示例#4
0
        public async Task <ActionResult <WorkResponse> > ChangeWorkInfo([FromBody] UpdateWorkRequest request)
        {
            //判断request里是否满足前置条件
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            var provider_id = Int32.Parse(User.Identity.Name);

            if (await UserAccessor.CheckRole(provider_id) == Role.Student)
            {
                return(BadRequest(new { message = "Student cannot update work" }));
            }
            var work = _mapper.Map <WorkEntity>(request);

            work.teacher_id = provider_id;
            work.work_id    = request.work_id;
            work.total_time = CalTotalTime(request.start_day, request.end_day, request.start_time, request.end_time, request.week_day);
            if (work.total_time == 0)
            {
                return(Ok("Duration time is 0."));
            }
            await WorkAccessor.Update(work); //return work_id

            return(Ok(_mapper.Map <WorkResponse>(work)));
        }
示例#5
0
        public async Task <ActionResult <MessageResponse> > CreateMessage([FromBody] MessageRequest request)
        {
            //判断request里是否满足前置条件
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }
            //取得存在cookie的当前账户id
            var temp_id = Int32.Parse(User.Identity.Name);

            if (await UserAccessor.CheckRole(temp_id) == Role.Student)
            {
                return(BadRequest(new { message = "Student cannot send message" }));
            }

            var temp_entity = _mapper.Map <MessageEntity>(request);

            temp_entity.sender_id = temp_id;

            var temp = await MessageAccessor.Create(temp_entity, 0);

            temp_entity.message_id  = temp;
            temp_entity.sender_name = await UserAccessor.GetUserName(temp_entity.sender_id);

            temp_entity.receiver_name = await UserAccessor.GetUserName(temp_entity.receiver_id);

            return(Ok(_mapper.Map <MessageResponse>(temp_entity)));
        }
示例#6
0
        public async Task <int> CreateAnnounce([FromBody] AnnounceRequest request)
        {
            //判断request里是否满足前置条件
            if (!ModelState.IsValid)
            {
                return(-5);
            }
            //取得存在cookie的当前账户id
            var user_id = Int32.Parse(User.Identity.Name);
            var role    = await UserAccessor.CheckRole(user_id);

            if (role == Role.Student || role == Role.Provider)
            {
                return(-10);
            }
            //生成annouce实例
            var announcement = _mapper.Map <AnnounceEntity>(request);

            announcement.user_id = user_id;
            //新建annouce
            var num = await AnnounceAccessor.Create(announcement);

            var s = await AnnounceAccessor.Createsend(num);

            return(num);
        }
示例#7
0
        public async Task <ActionResult <LeaveResponse> > UpdateLeave([FromBody] LeaveRequest request)
        {
            var stu_id = Int32.Parse(User.Identity.Name);

            if (await UserAccessor.CheckRole(stu_id) == Constants.Role.Provider)
            {
                return(BadRequest(new { message = "Providers cannot manage leave application." }));
            }

            var temp = _mapper.Map <LeaveEntity>(request);

            /* 检查请假时间是否在工作时间内 */
            WorkTimeEntity work_time = await WorkAccessor.GetWorkTime(temp.work_id);

            DateTimeFormatInfo dtFormat = new System.Globalization.DateTimeFormatInfo();

            dtFormat.ShortDatePattern = "yyyy-MM-dd";
            DateTime stDay = Convert.ToDateTime(work_time.start_day, dtFormat);
            DateTime edDay = Convert.ToDateTime(work_time.end_day, dtFormat);
            DateTime lvDay = Convert.ToDateTime(temp.leave_day);

            if (lvDay < stDay || lvDay > edDay || Convert.ToInt32(lvDay.DayOfWeek) != work_time.week_day)
            {
                return(Ok(-10)); //"The date of leave is not included in the work date."
            }

            dtFormat.ShortDatePattern = "HH:mm";
            DateTime stTime   = Convert.ToDateTime(work_time.start_time, dtFormat);
            DateTime edTime   = Convert.ToDateTime(work_time.end_time, dtFormat);
            DateTime lvStTime = Convert.ToDateTime(temp.leave_start, dtFormat);
            DateTime lvEdTime = Convert.ToDateTime(temp.leave_end, dtFormat);

            if (lvStTime < stTime || lvEdTime > edTime)
            {
                return(Ok(-11)); //"The time of leave is not included in the work time."
            }

            temp.leave_duration = CalDurationTime(temp.leave_start, temp.leave_end);
            temp.student_id     = stu_id;

            var leavere = await LeaveAccessor.Find(request.leave_id);

            if (leavere.status == ApplyStatus.Applying)
            {
                var ans = await LeaveAccessor.Update(_mapper.Map <LeaveEntity>(temp));

                leavere = await LeaveAccessor.Find(request.leave_id);
            }
            return(Ok(_mapper.Map <LeaveResponse>(leavere)));
        }
示例#8
0
        //[AllowAnonymous]
        public async Task <ActionResult <ApplyResponse> > ProManageApp(ManageApplyRequest request)
        {
            var pro_id = Int32.Parse(User.Identity.Name);

            if (await UserAccessor.CheckRole(pro_id) == Role.Student)
            {
                return(BadRequest(new { message = "Students cannot manage application." }));
            }

            ApplyEntity ae = await ApplyAccessor.Read(request.apply_id);

            if (ae == null)
            {
                return(BadRequest(new { message = "Apply id not found." }));
            }
            if (ae.status != Constants.ApplyStatus.Applying)
            {
                return(BadRequest(new { message = "Application have been managed." }));
            }
            var success_change = await ApplyAccessor.SetApplyStatus(request.apply_id, request.status);

            if (success_change > 0)
            {
                ae.status = request.status; //减少查询
                ApplyResponse ar = _mapper.Map <ApplyResponse>(ae);
                // 未检查id是否存在
                ar.student_name = await UserAccessor.GetUserName(ae.student_id);

                ar.teacher_name = await UserAccessor.GetUserName(ae.teacher_id);

                ar.work_name = await WorkAccessor.GetWorkName(ae.work_id);

                if (request.status == Constants.ApplyStatus.Accepted)
                {
                    // 录用,创建takes
                    var take = new TakesEntity
                    {
                        work_name  = ar.work_name,
                        student_id = ae.student_id,
                        work_id    = ae.work_id,
                        work_time  = await WorkAccessor.GetWorkTotalTime(ae.work_id)
                    };
                    await TakesAccessor.Create(take);
                }

                return(ar);
            }

            return(BadRequest(new { message = "Update failed" }));
        }
示例#9
0
        public async Task <int> DeleteAnnounceAll([FromBody] AnnounceStatusRequest request)
        {
            //取得存在cookie的当前账户id
            var temp_id = Int32.Parse(User.Identity.Name);
            var role    = await UserAccessor.CheckRole(temp_id);

            if (role == Role.Student || role == Role.Provider)
            {
                return(-10);
            }
            var temp_entity = _mapper.Map <AnnounceEntity>(request);
            var temp        = await AnnounceAccessor.DeleteAll(temp_entity);

            return(temp);
        }
示例#10
0
        public async Task <ActionResult <int> > DeleteLeave([FromBody] ManageLeaveRequest request)
        {
            var user_id = Int32.Parse(User.Identity.Name);

            if (await UserAccessor.CheckRole(user_id) == Constants.Role.Provider)
            {
                return(BadRequest(new { message = "Providers cannot manage leave application." }));
            }
            if (request.status == ApplyStatus.Applying)
            {
                var ans = await LeaveAccessor.Delete(request.leave_id);

                return(Ok(1));
            }
            return(Ok(-1));
        }
示例#11
0
        //[AllowAnonymous]
        public async Task <ActionResult <ApplyItemResponse> > ProViewApps([FromBody] ViewAppRequest request)
        {
            var pro_id = Int32.Parse(User.Identity.Name);

            if (await UserAccessor.CheckRole(pro_id) == Role.Student)
            {
                return(BadRequest(new { message = "ProViewApps is not for students." }));
            }

            var apps = new ApplyItemResponse();

            //apps.totalpage=0;
            apps.pagenum = request.pagenum;
            var start = (request.pagenum - 1) * request.pagesize;
            var end   = request.pagenum * request.pagesize;

            if (start < 0)
            {
                return(BadRequest(new { message = "Page num error" }));
            }

            apps.applist = new System.Collections.Generic.List <ApplyResponse>();
            var provide_list = await ApplyAccessor.ProViewApps(pro_id);

            if (provide_list != null)
            {
                for (int i = start; i < end && i < provide_list.total; i++)
                {
                    ApplyResponse ar = _mapper.Map <ApplyResponse>(provide_list.ApplyItem[i]);
                    // 未检查id是否存在
                    ar.student_name = await UserAccessor.GetUserName(provide_list.ApplyItem[i].student_id);

                    ar.teacher_name = await UserAccessor.GetUserName(provide_list.ApplyItem[i].teacher_id);

                    ar.work_name = await WorkAccessor.GetWorkName(provide_list.ApplyItem[i].work_id);

                    apps.applist.Add(ar);
                }
                apps.totalpage = provide_list.total;
                return(Ok(apps));
            }
            return(Ok(-1)); // Never arrive there
        }
示例#12
0
        //[AllowAnonymous]
        public async Task <ActionResult <LeaveResponse> > ProManageLeave(ManageLeaveRequest request)
        {
            var pro_id = Int32.Parse(User.Identity.Name);

            if (await UserAccessor.CheckRole(pro_id) == Constants.Role.Student)
            {
                return(BadRequest(new { message = "Students cannot manage leave application." }));
            }

            LeaveEntity le = await LeaveAccessor.Read(request.leave_id);

            if (le == null)
            {
                return(BadRequest(new { message = "Leave id not found." }));
            }
            if (le.status != Constants.ApplyStatus.Applying)
            {
                return(BadRequest(new { message = "The application have been managed." }));
            }
            var success_change = await LeaveAccessor.SetLeaveStatus(request.leave_id, request.status);

            if (success_change > 0)
            {
                le.status = request.status; //减少查询
                LeaveResponse lr = _mapper.Map <LeaveResponse>(le);
                // 未检查id是否存在
                lr.student_name = await UserAccessor.GetUserName(le.student_id);

                //lr.teacher_name = await UserAccessor.GetUserName(le.teacher_id);
                lr.work_name = await WorkAccessor.GetWorkName(le.work_id);

                if (request.status == Constants.ApplyStatus.Accepted)
                {
                    // 录用,更新takes
                    await TakesAccessor.UpdateAbsent(le.student_id, le.work_id, le.leave_duration);
                }

                return(lr);
            }

            return(BadRequest(new { message = "Update failed" }));
        }
示例#13
0
        public async Task <int> Deleteresign([FromBody] FindworkRequest request)
        {
            //判断request里是否满足前置条件
            if (!ModelState.IsValid)
            {
                return(-1);
            }
            var user_id = Int32.Parse(User.Identity.Name);

            if (await UserAccessor.CheckRole(user_id) != Role.Student)
            {
                return(-2);
            }
            TakesEntity entity = new TakesEntity();

            entity.work_id    = request.work_id;
            entity.student_id = user_id;
            var num = await TakesAccessor.Delete(entity);

            return(num);
        }
示例#14
0
        public async Task <ActionResult <LeaveItemResponse> > ViewLeave([FromBody] ViewLeavesRequest request)
        {
            LeaveItemResponse LeaveItem = new LeaveItemResponse();

            LeaveItem.total     = 0;
            LeaveItem.pagenum   = request.pagenum;
            LeaveItem.leavelist = new List <LeaveResponse>();

            var start = (request.pagenum - 1) * request.pagesize;
            var end   = request.pagenum * request.pagesize - 1;

            //取得存在cookie的当前账户id
            var user_id = Int32.Parse(User.Identity.Name);

            if (await UserAccessor.CheckRole(user_id) == Constants.Role.Provider)
            {
                return(BadRequest(new { message = "Providers cannot manage leave application." }));
            }
            var temp = await LeaveAccessor.ViewLeave(user_id);

            if (temp != null)
            {
                for (int i = 0; i < temp.total; i++)
                {
                    LeaveItem.total++;
                    if (i >= start && i <= end)
                    {
                        var list = await LeaveAccessor.Find(temp.leaveItem[i].leave_id);

                        LeaveResponse a = _mapper.Map <LeaveResponse>(list);

                        LeaveItem.leavelist.Add(a);
                    }
                }

                return(Ok(LeaveItem));
            }
            return(Ok(-1));
        }
示例#15
0
        public async Task <ActionResult <int> > CreateApply(ApplyRequest request)
        {
            var stu_id = Int32.Parse(User.Identity.Name);

            if (await UserAccessor.CheckRole(stu_id) != Role.Student)
            {
                return(BadRequest(new { message = "CreateApply is for students." }));
            }
            int check_apply = await ApplyAccessor.CheckApply(stu_id, request.work_id);

            if (check_apply == 1)
            {
                // 已通过改工作的申请
                return(Ok(-21));
            }
            else if (check_apply == 2)
            {
                // 正在申请该工作
                return(Ok(-22));
            }
            var temp = _mapper.Map <ApplyEntity>(request);

            temp.student_id = stu_id;
            temp.teacher_id = await WorkAccessor.GetTeacher(temp.work_id);

            temp.resume_id = await ResumeAccessor.GetResume(temp.student_id);

            if (temp.resume_id == -1)
            {
                return(Ok(-10));
            }
            var ans = await ApplyAccessor.Create(temp);

            if (ans > 0)
            {
                return(Ok(ans));
            }
            return(Ok(-1));
        }
示例#16
0
        public async Task <ActionResult <WorkResponse> > CreateWork([FromBody] ProvideWorkRequest request)
        {
            //判断request里是否满足前置条件
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }
            var provider_id = Int32.Parse(User.Identity.Name);

            if (await UserAccessor.CheckRole(provider_id) == Role.Student)
            {
                return(BadRequest(new { message = "Student cannot create work" }));
            }
            if (request.week_day < 1 || request.week_day > 7)
            {
                return(BadRequest(new { message = "week day must between 1 to 7." }));
            }
            var work = _mapper.Map <WorkEntity>(request);

            work.teacher_id = provider_id;
            //work.work_time = "none"; //tobe delete

            // 计算工作总小时数total_time
            work.total_time = CalTotalTime(request.start_day, request.end_day, request.start_time, request.end_time, request.week_day);
            if (work.total_time == 0)
            {
                return(Ok("Duration time is 0."));
            }
            int work_id = await WorkAccessor.Create(work);

            if (work_id == 0)
            {
                return(Ok("Fail to create work."));
            }
            work.work_id = work_id;
            return(Ok(_mapper.Map <WorkResponse>(work)));
        }