コード例 #1
0
        public void GetByEmployeeId_ValidEmployeeId_ReturnsCompensation()
        {
            // Arrange
            var expectedCompensation = new Compensation
            {
                Employee = new Employee
                {
                    EmployeeId = "16a596ae-edd3-4847-99fe-c4518e82c86f",
                    FirstName  = "John",
                    LastName   = "Lennon"
                },
                EffectiveDate = DateTime.Now.Date,
                Salary        = 100000
            };
            var logger     = new Mock <ILogger <ICompensationService> >();
            var repository = new Mock <ICompensationRepository>();

            repository.Setup(c => c.GetByEmployeeId(expectedCompensation.Employee.EmployeeId))
            .Returns(expectedCompensation);

            // Execute
            var compensation = new CompensationService(logger.Object, repository.Object).GetByEmployeeId(expectedCompensation.Employee.EmployeeId);

            // Assert
            compensation.Should().NotBeNull();
            compensation.Employee.Should().NotBeNull();
            compensation.Employee.FirstName.Should().Be(expectedCompensation.Employee.FirstName);
            compensation.Employee.LastName.Should().Be(expectedCompensation.Employee.LastName);
            compensation.EffectiveDate.Should().Be(expectedCompensation.EffectiveDate);
            compensation.Salary.Should().Be(expectedCompensation.Salary);
        }
コード例 #2
0
        public void Init()
        {
            _logger = Substitute.For <ILogger <CompensationService> >();
            _compensationRepository = Substitute.For <ICompensationRepository>();
            _employeeRepository     = Substitute.For <IEmployeeRepository>();

            _compensationService = new CompensationService(_logger, _compensationRepository, _employeeRepository);
        }
コード例 #3
0
        public void Create_NullCompensation_ReturnsNull()
        {
            // Arrange
            var logger     = new Mock <ILogger <ICompensationService> >();
            var repository = new Mock <ICompensationRepository>();

            // Execute
            var compensation = new CompensationService(logger.Object, repository.Object).Create(compensation: null);

            // Assert
            compensation.Should().BeNull();
        }
コード例 #4
0
        public void GetByEmployeeId_NullEmployeeId_ReturnsNull()
        {
            // Arrange
            var logger     = new Mock <ILogger <ICompensationService> >();
            var repository = new Mock <ICompensationRepository>();

            // Execute
            var compensation = new CompensationService(logger.Object, repository.Object).GetByEmployeeId(employeeId: null);

            // Assert
            compensation.Should().BeNull();
        }
コード例 #5
0
        public void GetByEmployeeId_NonExistentEmployeeId_ReturnsNull()
        {
            // Arrange
            var logger     = new Mock <ILogger <ICompensationService> >();
            var repository = new Mock <ICompensationRepository>();

            repository.Setup(c => c.GetByEmployeeId(It.IsAny <string>()))
            .Returns(() => null);

            // Execute
            var compensation = new CompensationService(logger.Object, repository.Object).GetByEmployeeId("non-existent-id");

            // Assert
            compensation.Should().BeNull();
        }
コード例 #6
0
        public void Create_ValidCompensation_ReturnsCompensation()
        {
            // Arrange
            var newCompensation = new Compensation
            {
                EmployeeId    = "16a596ae-edd3-4847-99fe-c4518e82c86f",
                EffectiveDate = DateTime.Now.Date,
                Salary        = 100000
            };

            var expectedCompensation = new Compensation
            {
                Employee = new Employee
                {
                    EmployeeId = newCompensation.EmployeeId,
                    FirstName  = "John",
                    LastName   = "Lennon"
                },
                EffectiveDate = newCompensation.EffectiveDate,
                Salary        = newCompensation.Salary
            };
            Compensation persistedCompensation = null;
            var          logger     = new Mock <ILogger <ICompensationService> >();
            var          repository = new Mock <ICompensationRepository>();

            repository.Setup(c => c.Add(It.IsAny <Compensation>()))
            .Callback((Compensation data) => persistedCompensation = data);
            repository.Setup(c => c.SaveAsync());

            repository.Setup(c => c.GetByEmployeeId(expectedCompensation.Employee.EmployeeId))
            .Returns(expectedCompensation);

            // Execute
            var compensation = new CompensationService(logger.Object, repository.Object).Create(newCompensation);

            // Assert
            persistedCompensation.Should().NotBeNull();
            persistedCompensation.EmployeeId.Should().Be(expectedCompensation.Employee.EmployeeId);
            persistedCompensation.EffectiveDate.Should().Be(expectedCompensation.EffectiveDate);
            persistedCompensation.Salary.Should().Be(expectedCompensation.Salary);

            compensation.Should().NotBeNull();
            compensation.Employee.Should().NotBeNull();
            compensation.Employee.FirstName.Should().Be(expectedCompensation.Employee.FirstName);
            compensation.Employee.LastName.Should().Be(expectedCompensation.Employee.LastName);
            compensation.EffectiveDate.Should().Be(expectedCompensation.EffectiveDate);
            compensation.Salary.Should().Be(expectedCompensation.Salary);
        }
コード例 #7
0
        public void Create_EmptyEmployeeId_ReturnsNull()
        {
            // Arrange
            var expectedCompensation = new Compensation
            {
                EmployeeId    = string.Empty,
                EffectiveDate = DateTime.Now.Date,
                Salary        = 100000
            };
            var logger     = new Mock <ILogger <ICompensationService> >();
            var repository = new Mock <ICompensationRepository>();

            // Execute
            var compensation = new CompensationService(logger.Object, repository.Object).Create(expectedCompensation);

            // Assert
            compensation.Should().BeNull();
        }
コード例 #8
0
 public CompensationController(UserContext context)
 {
     this._context            = context;
     this.compensationService = new CompensationService(context);
 }
コード例 #9
0
        protected void Application_Start()
        {
            objFileLog.WriteLine(LogType.Info, "App start", "Global.asax", "App_Start", string.Empty);
            XmlConfigurator.Configure();
            log.Info("Vibrant Web Application started.");
            ViewEngines.Engines.Clear();
            ViewEngines.Engines.Add(new RazorViewEngine());
            AreaRegistration.RegisterAllAreas();

            WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
            AuthConfig.RegisterAuth();

            //timer.AutoReset = true;
            //timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);
            //timer.Enabled = true;

            var SEM = new SEMController();

            SEM.SetTimerValue();

            //Resource Allocation Auto mail
            var resource = new ResourceController();
            // resource.SetTimerValue();
            var travel = new TravelController();

            travel.SetTimerValue();

            //Confirmation Process Auto mail
            var Confirmation = new ConfirmationProcessController();

            Confirmation.SetTimerValue();

            Application["LeaveBalanceWF"] = "";
            Application["AttendanceWF"]   = "";
            Application["LeaveUpLoadWF"]  = "";
            Application["WokflowRuntime"] = "";

            var workflowRuntime = Application["WokflowRuntime"] as WorkflowRuntime;

            if (workflowRuntime == null)
            {
                workflowRuntime = new WorkflowRuntime();

                workflowRuntime.WorkflowIdled      += workflowRuntime_WorkflowIdled;
                workflowRuntime.WorkflowLoaded     += workflowRuntime_WorkflowLoaded;
                workflowRuntime.WorkflowUnloaded   += workflowRuntime_WorkflowUnloaded;
                workflowRuntime.WorkflowPersisted  += workflowRuntime_WorkflowPersisted;
                workflowRuntime.WorkflowCompleted  += delegate { };
                workflowRuntime.WorkflowTerminated +=
                    delegate(object sender1, WorkflowTerminatedEventArgs e1) { Debug.WriteLine(e1.Exception.Message); };

                // Add the Persistance Service

                //WorkflowPersistenceService workflowPersistanceService = new SqlWorkflowPersistenceService(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
                //workflowRuntime.AddService(workflowPersistanceService);

                WorkflowSchedulerService workflowSchedulerService = new DefaultWorkflowSchedulerService();
                workflowRuntime.AddService(workflowSchedulerService);

                //System.Workflow.Runtime.Hosting. SqlTrackingService trackingService = new SqlTrackingService(connectionString2);

                //System.Workflow.Runtime.Tracking.SqlTrackingService workflowTrackingService = new System.Workflow.Runtime.Tracking.SqlTrackingService(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
                //workflowRuntime.AddService(workflowTrackingService);

                // Add the External Data Exchange Service
                var dataExchangeService = new ExternalDataExchangeService();
                workflowRuntime.AddService(dataExchangeService);

                LeaveBalanceService      objLeaveBalanceService;
                LeaveDetailsService      objLeaveDetailsService;
                OutOfOfficeService       objOutOfOfficeService;
                CompensationService      objCompensationService;
                SignInSignOutService     objSignInSignOutService;
                AttendanceCheckerService objAttendanceCheckerService;
                LeaveUploadService       objLeaveUploadService;
                // Add a new instance of the LeaveBalanceService to the External Data Exchange Service
                objLeaveBalanceService      = new LeaveBalanceService();
                objLeaveDetailsService      = new LeaveDetailsService();
                objOutOfOfficeService       = new OutOfOfficeService();
                objCompensationService      = new CompensationService();
                objSignInSignOutService     = new SignInSignOutService();
                objAttendanceCheckerService = new AttendanceCheckerService();
                objLeaveUploadService       = new LeaveUploadService();

                //Adding our services to  ExternalDataExchangeService

                dataExchangeService.AddService(objLeaveBalanceService);
                dataExchangeService.AddService(objLeaveDetailsService);
                dataExchangeService.AddService(objOutOfOfficeService);
                dataExchangeService.AddService(objCompensationService);
                dataExchangeService.AddService(objSignInSignOutService);
                dataExchangeService.AddService(objAttendanceCheckerService);
                dataExchangeService.AddService(objLeaveUploadService);

                // Start the Workflow services
                //workflowRuntime.UnloadOnIdle = true;
                workflowRuntime.StartRuntime();
                Application["WokflowRuntime"] = workflowRuntime;
                //System.Web.HttpContext.Current.Cache["WokflowRuntime"]=workflowRuntime;
                //System.Web.HttpContext.Current.Cache["WokflowRuntime"]=workflowRuntime;
                objFileLog.WriteLine(LogType.Info, "App start finished", "Global.asax", "App_Start", string.Empty);
            }
        }
コード例 #10
0
        protected void gvCompensationApprovals_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            try
            {
                GridViewRow row = gvCompensationApprovals.Rows[e.RowIndex];

                Label lblTMmember = row.FindControl("lblEditUserID") as Label;

                objCompensationModel.UserID = Convert.ToInt32(lblTMmember.Text.ToString());

                Label lblEditCompensationID = row.FindControl("lblEditCompensationID") as Label;
                objCompensationModel.CompensationID = Convert.ToInt32(lblEditCompensationID.Text);

                Label lblCompensationWFID = row.FindControl("lblCompensationWFID") as Label;
                if (lblCompensationWFID.Text != "")
                {
                    objCompensationModel.WorkFlowID = new Guid(lblCompensationWFID.Text);
                }

                Label lblgrvEditUserName = row.FindControl("lblgrvEditUserName") as Label;

                TextBox txtEditAppliedFor = row.FindControl("txtgrvAppliedFor") as TextBox;

                DropDownList ddlStatusID = row.FindControl("ddlgrvStatusName") as DropDownList;
                objCompensationModel.StatusID = Convert.ToInt32(ddlStatusID.SelectedValue);
                if (ddlStatusID.Visible == false)
                {
                    WfApprovedLocked = true;
                }

                Label lblEditgrvReason = row.FindControl("lblEditgrvReason") as Label;

                objCompensationModel.Resason = lblEditgrvReason.Text.Trim();

                TextBox ApproverComments = row.FindControl("txtgrvApproverComments") as TextBox;
                objCompensationModel.ApproverComments = Convert.ToString(ApproverComments.Text.ToString());

                objCompensationModel.RequestedOn = Convert.ToDateTime(DateTime.Now.ToShortDateString());

                objCompensationModel.CompensationTo = Convert.ToDateTime(txtEditAppliedFor.Text.Trim());

                objLeaveDeatilsModel.UserID = Convert.ToInt32(lblTMmember.Text.ToString());
                //Getting All the Holidays Details
                //dsHolidaysList = objHolidayBOL.bindData();
                objHolidayModel.UserID    = objCompensationModel.UserID;
                objHolidayModel.StartDate = Convert.ToDateTime(txtEditAppliedFor.Text.Trim());
                objHolidayModel.EndDate   = Convert.ToDateTime(txtEditAppliedFor.Text.Trim());
                dsHolidaysList            = objHolidayBOL.bindHolidaysForLeaveApprovals(objHolidayModel);

                //For Getting ConfigDate from Database
                dsConfigItem = objCompensationBOL.GetCompensationDetails(objCompensationModel);
                ConfigDate   = Convert.ToDateTime(dsConfigItem.Tables[1].Rows[0]["ConfigItemValue"].ToString());

                FromDate = Convert.ToDateTime(txtEditAppliedFor.Text.Trim());
                Boolean isCompLeaveApproved = false;
                rowsAffected = objCompensationBOL.CheckSignInForCompensation(objCompensationModel);

                objRosterPlanningModel.UserId = Convert.ToInt32(lblTMmember.Text.ToString());
                dsEmployeeRole = ObjRosterPlanningBOL.GetEmployeeRole(objRosterPlanningModel);
                foreach (DataRow rowRole in dsEmployeeRole.Tables[0].Rows)
                {
                    if (rowRole["RoleName"].ToString().Equals("Shift"))
                    {
                        isShiftEmployee = true;
                        break;
                    }
                }
                if (rowsAffected > 0)
                {
                    if (!isShiftEmployee)
                    {
                        // This is checking the total list of holiday in current year provided by V2.
                        for (int k = 0; k < dsHolidaysList.Tables[0].Rows.Count; k++)
                        {
                            if (FromDate.ToString() == dsHolidaysList.Tables[0].Rows[k]["HolidayDate"].ToString())
                            {
                                isCompLeaveApproved = true;
                                break;
                            }
                        }

                        // This is to check whether the working day is a WeekDay.
                        if (FromDate.DayOfWeek.ToString() == "Saturday" || FromDate.DayOfWeek.ToString() == "Sunday")
                        {
                            isCompLeaveApproved = true;
                        }
                    }
                    else
                    {
                        objRosterPlanningModel.FromDate = Convert.ToDateTime(FromDate);
                        objRosterPlanningModel.ToDate   = Convert.ToDateTime(FromDate);

                        dsEmployeeShiftDetail = ObjRosterPlanningBOL.GetEmployeeShiftDetail(objRosterPlanningModel);
                        for (int k = 0; k < dsEmployeeShiftDetail.Tables[1].Rows.Count; k++)
                        {
                            if (FromDate.ToString() == dsEmployeeShiftDetail.Tables[1].Rows[k]["HolidayDate"].ToString())
                            {
                                isCompLeaveApproved = true;
                                break;
                            }
                        }
                        for (int i = 0; i < dsEmployeeShiftDetail.Tables[0].Rows.Count; i++)
                        {
                            if (Convert.ToDateTime(FromDate.ToString()) == Convert.ToDateTime(dsEmployeeShiftDetail.Tables[0].Rows[i]["WeekOff1"].ToString()) || (Convert.ToDateTime(FromDate.ToString()) == Convert.ToDateTime(dsEmployeeShiftDetail.Tables[0].Rows[i]["WeekOff2"].ToString())))
                            {
                                isCompLeaveApproved = true;
                                break;
                            }
                        }
                    }
                    if (isCompLeaveApproved)
                    {
                        // Compensatory Leave Approved Successfully.
                        objCompensationModel.AppliedFor = Convert.ToDateTime(FromDate.ToString());
                        UpdateCompenstionDetails();
                        gvCompensationApprovals.EditIndex = -1;
                        lblError.Visible   = true;
                        lblSuccess.Visible = true;
                        lblSuccess.Text    = "Compensatory Leave details are updated successfully";
                        lblError.Text      = "";

                        if (ddlStatusID.SelectedValue == Convert.ToString("2"))
                        {
                            //Here delete the all records of related CompensationID
                            objLeaveTransDetailsModel.UserID         = Convert.ToInt32(lblTMmember.Text.ToString());
                            objLeaveTransDetailsModel.CompensationID = Convert.ToInt32(lblEditCompensationID.Text);

                            //Here Adding Leave records to LeaveTransaction table
                            objLeaveTransDetailsModel.UserID         = Convert.ToInt32(lblTMmember.Text.ToString());
                            objLeaveTransDetailsModel.CompensationID = Convert.ToInt32(lblEditCompensationID.Text);

                            objLeaveTransDetailsModel.TransactionDate = Convert.ToDateTime(DateTime.Now.ToShortDateString());
                            objLeaveTransDetailsModel.Description     = "Compensatory Leave:" + lblEditgrvReason.Text.ToString();
                            objLeaveTransDetailsModel.Quantity        = Convert.ToDecimal(1);
                            objLeaveTransDetailsModel.LeaveType       = Convert.ToBoolean(0);

                            AddCompensationTransactionDetails();
                            UpdateEmployeeLeaveAndComp();
                        }
                        if (ddlStatusID.SelectedValue == Convert.ToString("3"))
                        {
                            //Here delete the all records of related CompensationID
                            objLeaveTransDetailsModel.UserID         = Convert.ToInt32(lblTMmember.Text.ToString());
                            objLeaveTransDetailsModel.CompensationID = Convert.ToInt32(lblEditCompensationID.Text);
                            DeleteCompensationTransactionDetails();
                            UpdateEmployeeLeaveAndComp();

                            //Here Adding Leave records to Compensation table
                            objCompensationModel.AppliedFor = Convert.ToDateTime(txtEditAppliedFor.Text.Trim());
                            objCompensationModel.StatusID   = Convert.ToInt32(3);
                            UpdateCompenstionDetails();
                            lblSuccess.Visible = true;
                            lblSuccess.Text    = "Compensatory Leave Details are Rejected";
                        }
                    }
                }
                else
                {
                    // Compensatory Leave Approved Unsuccessfully.
                    lblError.Visible = true;
                    lblError.Text    = "The entry for the day you are approving Compensatory Leave for is in Pending Status.Kindly approve that";
                    lblSuccess.Text  = "";
                    return;
                }

                if (WfApprovedLocked == false)
                {
                    if (objCompensationModel.StatusID == 2)
                    {
                        try
                        {
                            WorkflowRuntime wr = (WorkflowRuntime)Application["WokflowRuntime"];
                            if (objCompensationModel.WorkFlowID != null || objCompensationModel.WorkFlowID.ToString() != "")
                            {
                                WorkflowInstance wi = wr.GetWorkflow(objCompensationModel.WorkFlowID);
                                wi.Resume();
                                CompensationService objCompensationService = (CompensationService)wr.GetService(typeof(CompensationService));
                                objCompensationService.RaiseApproveEvent(wi.InstanceId);
                            }
                        }
                        catch (V2Exceptions)
                        {
                            try
                            {
                                Response.Redirect("CompensationApproval.aspx");
                            }
                            catch (System.Threading.ThreadAbortException ex)
                            {
                                throw;
                            }
                        }
                        catch (System.Exception)
                        {
                            try
                            {
                                Response.Redirect("CompensationApproval.aspx");
                            }
                            catch (System.Threading.ThreadAbortException ex)
                            {
                                throw;
                            }
                        }
                    }
                    if (objCompensationModel.StatusID == 3)
                    {
                        try
                        {
                            WorkflowRuntime wr = (WorkflowRuntime)Application["WokflowRuntime"];
                            if (objCompensationModel.WorkFlowID != null || objCompensationModel.WorkFlowID.ToString() != "")
                            {
                                WorkflowInstance wi = wr.GetWorkflow(objCompensationModel.WorkFlowID);
                                wi.Resume();
                                CompensationService objCompensationService = (CompensationService)wr.GetService(typeof(CompensationService));
                                objCompensationService.RaiseRejectEvent(wi.InstanceId);
                            }
                        }
                        catch (V2Exceptions)
                        {
                            try
                            {
                                Response.Redirect("CompensationApproval.aspx");
                            }
                            catch (System.Threading.ThreadAbortException ex)
                            {
                                throw;
                            }
                        }
                        catch (System.Exception)
                        {
                            try
                            {
                                Response.Redirect("CompensationApproval.aspx");
                            }
                            catch (System.Threading.ThreadAbortException ex)
                            {
                                throw;
                            }
                        }
                    }
                    if (objCompensationModel.StatusID == 4)
                    {
                        try
                        {
                            WorkflowRuntime wr = (WorkflowRuntime)Application["WokflowRuntime"];
                            if (objCompensationModel.WorkFlowID != null || objCompensationModel.WorkFlowID.ToString() != "")
                            {
                                WorkflowInstance wi = wr.GetWorkflow(objCompensationModel.WorkFlowID);
                                wi.Resume();
                                CompensationService objCompensationService = (CompensationService)wr.GetService(typeof(CompensationService));
                                objCompensationService.RaiseCancelEvent(wi.InstanceId);
                            }
                        }
                        catch (V2Exceptions)
                        {
                            try
                            {
                                Response.Redirect("CompensationApproval.aspx");
                            }
                            catch (System.Threading.ThreadAbortException ex)
                            {
                                throw;
                            }
                        }
                        catch (System.Exception)
                        {
                            try
                            {
                                Response.Redirect("CompensationApproval.aspx");
                            }
                            catch (System.Threading.ThreadAbortException ex)
                            {
                                throw;
                            }
                        }
                    }
                }
                else
                {
                    if (objCompensationModel.StatusID == 2)
                    {
                        //Sending a Mail to Employee after Updating compensatory Leaves
                        if (WfApprovedLocked == true)
                        {
                            objLeaveDeatilsModel.UserID = Convert.ToInt32(lblTMmember.Text.ToString());
                            SendingMailToReportingPerson();
                        }
                    }
                }

                Response.Redirect("CompensationApproval.aspx");
            }
            catch (System.Threading.ThreadAbortException ex)
            {
                throw;
            }
            catch (V2Exceptions ex)
            {
                throw;
            }
            catch (System.Exception ex)
            {
                if (ex.Message.CompareTo("Already Compensation applied for this date.") != 0)
                {
                    lblError.Visible = false;
                    FileLog objFileLog = FileLog.GetLogger();
                    objFileLog.WriteLine(LogType.Error, ex.Message, "CompensationApproval.aspx.cs", "btnSubmit", ex.StackTrace);
                    throw new V2Exceptions(ex.ToString(), ex);
                }
                else
                {
                    lblError.Visible = true;

                    lblError.Text   = "User has already applied for compensatory leave for this date";
                    lblSuccess.Text = "";
                }
            }
        }