Exemplo n.º 1
0
        /// <summary>
        /// The mark subject form as read only.
        /// </summary>
        /// <param name="formId">
        /// The form id.
        /// </param>
        /// <param name="subjectId">
        /// The subject id.
        /// </param>
        /// <param name="appUserId">
        /// The app user id.
        /// </param>
        /// <param name="lockFor">
        /// The lock for.
        /// </param>
        public void MarkSubjectFormAsReadOnly(int formId, int subjectId, int appUserId, int lockFor = 30)
        {
            var lockedForm = _context.FormInProcesses.FirstOrDefault(f => f.FormId == formId && f.SubjectId == subjectId);

            if (lockedForm == null)
            {
                lockedForm = new FormInProcess();
                _context.FormInProcesses.Add(lockedForm);
            }

            lockedForm.FormId         = formId;
            lockedForm.SubjectId      = subjectId;
            lockedForm.AppUserId      = appUserId;
            lockedForm.IsLocked       = true;
            lockedForm.MaxLockTimeMin = lockFor;
            lockedForm.OpenendOn      = DateTime.UtcNow;
        }
Exemplo n.º 2
0
        /// <summary>
        /// The unlock form from read only.
        /// </summary>
        /// <param name="formId">
        /// The form id.
        /// </param>
        /// <param name="subjectId">
        /// The subject id.
        /// </param>
        /// <param name="appUserId">
        /// The app user id.
        /// </param>
        public void UnlockFormFromReadOnly(int formId, int subjectId, int appUserId)
        {
            var lockedForm = _context.FormInProcesses.FirstOrDefault(f => f.FormId == formId && f.SubjectId == subjectId);

            if (lockedForm == null)
            {
                lockedForm = new FormInProcess();
                _context.FormInProcesses.Add(lockedForm);
            }

            lockedForm.FormId              = formId;
            lockedForm.SubjectId           = subjectId;
            lockedForm.AppUserId           = 0;
            lockedForm.IsLocked            = false;
            lockedForm.ReleasedOn          = DateTime.UtcNow;
            lockedForm.UnlockedByAppUserId = appUserId;
        }
Exemplo n.º 3
0
        /// <summary>
        /// The can open form to write for subject.
        /// </summary>
        /// <param name="formId">
        /// The form id.
        /// </param>
        /// <param name="subjectId">
        /// The subject id.
        /// </param>
        /// <param name="appUserId">
        /// The app user id.
        /// </param>
        /// <returns>
        /// The <see cref="bool"/> .
        /// </returns>
        public bool CanOpenFormToWriteForSubject(int formId, int subjectId, int appUserId)
        {
            var lockedForm = _context.FormInProcesses.FirstOrDefault(f => f.FormId == formId && f.SubjectId == subjectId);

            if (lockedForm == null)
            {
                lockedForm = new FormInProcess {
                    AppUserId = 0, FormId = formId, SubjectId = subjectId, IsLocked = false, MaxLockTimeMin = 0
                };
                _context.Commit();
            }

            if (lockedForm.IsLocked)
            {
                if ((DateTime.UtcNow - lockedForm.OpenendOn).Minutes > lockedForm.MaxLockTimeMin || lockedForm.AppUserId == appUserId)
                {
                    UnlockFormFromReadOnly(formId, subjectId, appUserId);
                    _context.Commit();
                }
            }

            return(lockedForm.IsLocked);
        }