Exemplo n.º 1
0
        /// <summary>
        /// 建立請假單
        /// </summary>
        /// <param name="requestData"></param>
        /// <param name="files"></param>
        /// <returns></returns>
        public Infrastructure.ViewModel.SignInLogViewModel SetNewAbsenceForm(Infrastructure.ViewModel.ActivityFunction.Leave.SetNewAbsenceFormRequest requestData, List <FileStorage> files, List <Stream> streams)
        {
            var tokenService = new TokenService();
            var checkMember  = tokenService.GetTokenInfo(requestData.Token.ToString()).Result;

            if (checkMember == null)
            {
                return(null);
            }
            var authService           = new AuthService();
            var learningcircleService = new LearningCircleService();
            var learningInfo          = learningcircleService.GetDetailByOuterKey(requestData.CircleKey);

            if (learningInfo == null)
            {
                return(null);
            }
            var auth = authService.CheckFunctionAuth(learningInfo.Id, ParaCondition.LeaveFunction.Create, checkMember.MemberId);

            if (auth)
            {
                var uploadData = new Infrastructure.DataTransferObject.UploadFileModel()
                {
                    Token           = requestData.Token,
                    Title           = requestData.Title,
                    Content         = requestData.Content,
                    CircleKey       = requestData.CircleKey,
                    LeaveDate       = requestData.LeaveDate,
                    LeaveCategoryId = requestData.LeaveCategoryId
                };
                var createRespone = Add(learningInfo, checkMember.MemberId, uploadData, files, streams);
                if (createRespone == null)
                {
                    return(null);
                }
                else
                {
                    return(createRespone);
                }
            }
            return(null);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 新增請假單 - 預先新增假單
        /// </summary>
        /// <param name="learningId"></param>
        /// <param name="isTeacher"></param>
        /// <param name="memberId"></param>
        /// <param name="leaveDateTime"></param>
        /// <param name="leaveCategoryId"></param>
        /// <param name="leaveStatus"></param>
        /// <param name="title"></param>
        /// <param name="reason"></param>
        /// <returns></returns>
        public Infrastructure.ViewModel.SignInLogViewModel Add(LearningCircle learningInfo, int memberId, Infrastructure.DataTransferObject.UploadFileModel uploadInfo, List <FileStorage> files, List <Stream> fileStreams)
        {
            var parentFolderId = string.Empty;

            var db             = _uow.DbContext;
            var connectionInfo = db.Members.Find(memberId);
            var memberAccount  = _uow.EntityRepository <Member>().GetFirst(x => x.Id == memberId);

            if (memberAccount == null)
            {
                return(null);
            }

            var _entity    = new AttendanceLeave();
            var _actEntity = new Activitys();

            lock (_lock)
            {
                DateTime dt    = DateTime.UtcNow;
                Guid     eveId = Guid.NewGuid();
                try
                {
                    var studentLeave = db.AttendanceLeave.Where(t => t.StudId == memberId).ToList();
                    var checkIsLeave = new AttendanceLeave();
                    if (studentLeave.FirstOrDefault() != null)
                    {
                        checkIsLeave = studentLeave.FirstOrDefault(t => t.LeaveDate.Date == uploadInfo.LeaveDate.Date && t.Status != "40" && t.LearningId == learningInfo.Id);
                    }
                    else
                    {
                        checkIsLeave = null;
                    }
                    if (checkIsLeave == null)
                    {
                        _entity.Content    = uploadInfo.Content;
                        _entity.CreateDate = dt;
                        _entity.Creator    = memberId;
                        _entity.EventId    = eveId;
                        _entity.LearningId = learningInfo.Id;
                        if (uploadInfo.LeaveDate.Hour == 0)
                        {
                            _entity.LeaveDate = uploadInfo.LeaveDate;
                        }
                        else
                        {
                            _entity.LeaveDate = uploadInfo.LeaveDate.ToUniversalTime();
                        }
                        _entity.LeaveType = uploadInfo.LeaveCategoryId;
                        _entity.Status    = QueryCondition.LeaveState.Review;
                        _entity.StudId    = memberId;
                        _entity.Subject   = uploadInfo.Title;
                        db.AttendanceLeave.Add(_entity);
                        _actEntity.Created     = Infrastructure.Property.TimeData.Create(dt);
                        _actEntity.Updated     = Infrastructure.Property.TimeData.Create(null);
                        _actEntity.Deleted     = Infrastructure.Property.TimeData.Create(null);
                        _actEntity.CreateUser  = memberId;
                        _actEntity.IsActivity  = false;
                        _actEntity.ModuleKey   = Utility.ParaCondition.ModuleType.Leave;
                        _actEntity.OuterKey    = eveId;
                        _actEntity.CardisShow  = false;
                        _actEntity.Publish_Utc = dt;
                        _actEntity.ToRoomId    = learningInfo.LearningOuterKey;
                        db.Activitys.Add(_actEntity);

                        //執行
                        db.SaveChanges();
                    }
                    else
                    {
                        return(null);
                    }
                }
                catch (Exception ex)
                {
                    return(null);

                    throw ex;
                }
            }


            var newFiles   = fileService.UploadFiles(memberId, files, fileStreams.ToArray());
            var _fileArray = new string[files.Count];

            if (files.Count > 0)
            {
                //建立檔案與請假單的關聯
                SetLeaveFileReferenceByFiles(_entity.Id, newFiles);
            }

            var result = new Infrastructure.ViewModel.SignInLogViewModel
            {
                EventId           = _entity.EventId,
                OuterKeySignInLog = new Dictionary <string, SignInLog>()
            };
            //db = new iThinkDB();
            var sqlSignInActivity = db.Activitys.Where(t => t.ToRoomId.ToLower() == uploadInfo.CircleKey.ToLower() && t.ModuleKey == Utility.ParaCondition.ModuleType.SignIn && t.CardisShow == true && t.StartDate.HasValue);

            foreach (var _act in sqlSignInActivity)
            {
                if (_act.ActivityDate != null)
                {
                    if (_act.ActivityDate.Value.ToLocalTime().Date == uploadInfo.LeaveDate.Date)
                    {
                        var mylog = signInLogService.GetSignInLog(Convert.ToInt32(_act.CreateUser.ToString()), _act.OuterKey, memberId);
                        if (mylog != null)
                        {
                            mylog.LeaveStatus = "20";
                            mylog.Mode        = 0;
                            mylog.Time        = DateTime.UtcNow;
                            var outerKey = Utility.OuterKeyHelper.GuidToPageToken(_act.OuterKey);
                            result.OuterKeySignInLog.Add(outerKey, mylog);
                        }
                    }
                }
            }
            return(result);
        }