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); }
public void Init() { _logger = Substitute.For <ILogger <CompensationService> >(); _compensationRepository = Substitute.For <ICompensationRepository>(); _employeeRepository = Substitute.For <IEmployeeRepository>(); _compensationService = new CompensationService(_logger, _compensationRepository, _employeeRepository); }
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(); }
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(); }
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(); }
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); }
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(); }
public CompensationController(UserContext context) { this._context = context; this.compensationService = new CompensationService(context); }
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); } }
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 = ""; } } }