Esempio n. 1
0
        /// <summary>
        /// Apply business method.
        /// </summary>
        /// <param name="leave">A leave value.</param>
        /// <returns>Returns a Leave object.</returns>
        public Leave Apply(Leave leave)
        {
            leave.Status        = LeaveStatuses.Pending;
            leave.DateSubmitted = DateTime.Now;
            leave.IsCompleted   = false;

            LeaveStatusLog log = CreateLog(leave);

            // Data access component declarations.
            var leaveDAC          = new LeaveDAC();
            var leaveStatusLogDAC = new LeaveStatusLogDAC();

            Validations.ValidateLeaveDates(leave);

            // Check for overlapping leaves.
            if (leaveDAC.IsOverlap(leave))
            {
                throw new ApplicationException("Date range is overlapping with another leave.");
            }

            using (TransactionScope ts =
                       new TransactionScope(TransactionScopeOption.Required))
            {
                // Step 1 - Calling Create on LeaveDAC.
                leaveDAC.Create(leave);

                // Step 2 - Calling Create on LeaveStatusLogDAC.
                log.LeaveID = leave.LeaveID;
                leaveStatusLogDAC.Create(log);

                ts.Complete();
            }

            return(leave);
        }
Esempio n. 2
0
        /// <summary>
        /// ListLogsByLeave business method.
        /// </summary>
        /// <param name="leaveID">A leaveID value.</param>
        /// <returns>Returns a List<LeaveStatusLog> object.</returns>
        public List <LeaveStatusLog> ListLogsByLeave(long leaveID)
        {
            // Data access component declarations.
            LeaveStatusLogDAC leaveStatusLogDAC = new LeaveStatusLogDAC();

            // Step 1 - Calling SelectByLeave on LeaveStatusLogDAC.
            List <LeaveStatusLog> result = leaveStatusLogDAC.SelectByLeave(leaveID);

            return(result);
        }
Esempio n. 3
0
        /// <summary>
        /// Apply business method.
        /// </summary>
        /// <param name="leave">A leave value.</param>
        /// <returns>Returns a Leave object.</returns>
        public Leave Apply(Leave leave)
        {
            leave.Status        = LeaveStatuses.Pending;
            leave.DateSubmitted = DateTime.Now;
            leave.IsCompleted   = false;

            LeaveStatusLog log = CreateLog(leave);

            // Data access component declarations.
            var leaveDAC          = new LeaveDAC();
            var leaveStatusLogDAC = new LeaveStatusLogDAC();

            // Activate Data Annotation validation.
            var context          = new ValidationContext(leave);
            var validationErrors = new List <ValidationResult>();

            Validator.TryValidateObject(leave, context, validationErrors, true);

            if (validationErrors.Count > 0)
            {
                throw new ApplicationException(validationErrors[0].ErrorMessage);
            }

            // Check for overlapping leaves.
            if (leaveDAC.IsOverlap(leave))
            {
                throw new ApplicationException("Date range is overlapping with another leave.");
            }

            using (TransactionScope ts =
                       new TransactionScope(TransactionScopeOption.Required))
            {
                // Step 1 - Calling Create on LeaveDAC.
                leaveDAC.Create(leave);

                // Step 2 - Calling Create on LeaveStatusLogDAC.
                log.LeaveID = leave.LeaveID;
                leaveStatusLogDAC.Create(log);

                ts.Complete();
            }

            return(leave);
        }
Esempio n. 4
0
        private void UpdateStatus(Leave leave)
        {
            LeaveStatusLog log = CreateLog(leave);

            // Data access component declarations.
            var leaveDAC          = new LeaveDAC();
            var leaveStatusLogDAC = new LeaveStatusLogDAC();

            using (TransactionScope ts =
                       new TransactionScope(TransactionScopeOption.Required))
            {
                // Step 1 - Calling UpdateById on LeaveDAC.
                leaveDAC.UpdateStatus(leave);

                // Step 2 - Calling Create on LeaveStatusLogDAC.
                leaveStatusLogDAC.Create(log);

                ts.Complete();
            }
        }