/// <summary> /// Check policies of user for needed type of vacation /// </summary> /// <param name="vacation"></param> /// <returns></returns> VacationRequest CheckPolicies(VacationRequest vacation) { var user = uOW.UserRepo.GetByID(vacation.UserId); int vacationDays = (vacation.EndDate - vacation.StartDate).Days; if (vacationDays < 0) { return(null); } var yearsOfOffice = user.YearsOfService; var policy = uOW.PolicyRepo.All.FirstOrDefault(p => p.MinYearsOfOffice <= yearsOfOffice && p.MaxYearsOfOffice >= yearsOfOffice); var vacationType = Enum.GetName(typeof(VacationType), vacation.VacationType); var remainDays = (int)GetPropValue(user, vacationType); if (remainDays < vacationDays) { return(null); } if (vacationDays == 0) { vacationDays = 1; } int newRemainDays = remainDays - vacationDays; vacation.User = UpdateUserRemainDays(user, vacationType, newRemainDays); return(vacation); }
void CreateVacationRequests(MyCompanyContext context) { var workingDaysCalculator = new WorkingDaysCalculator(new CalendarRepository(context)); var now = DateTime.UtcNow.Date; int total = 0; foreach (var employee in context.Employees) { int requests = 2; for (int i = 0; i < requests; i++) { int days = _randomize.Next(2, 4); var from = now.AddDays(10 + 5 * i); var to = now.AddDays(14 + 5 * i); int numDays = workingDaysCalculator.GetWorkingDays(employee.OfficeId, from, to); var request = new VacationRequest() { From = from, To = to, NumDays = numDays, Comments = GetComment(total), CreationDate = DateTime.UtcNow.AddDays(-1), LastModifiedDate = DateTime.UtcNow, Status = (VacationRequestStatus)i + 1, EmployeeId = employee.EmployeeId, }; total++; context.VacationRequests.Add(request); } } context.SaveChanges(); }
public void VacationRequestRepository_AddVacationRequest_Added_NotFail_Test() { var context = new MyCompanyContext(); int expected = context.VacationRequests.Count() + 1; var workingDaysCalculator = new Data.Services.Fakes.StubIWorkingDaysCalculator(); workingDaysCalculator.GetWorkingDaysInt32DateTimeDateTime = (i, time, arg3) => 5; var employeeId = context.Employees.FirstOrDefault().EmployeeId; var target = new VacationRequestRepository(context, null, workingDaysCalculator, false); var vacationRequest = new VacationRequest() { From = DateTime.UtcNow, To = DateTime.UtcNow, NumDays = 0, Comments = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", CreationDate = DateTime.UtcNow.AddDays(-1), LastModifiedDate = DateTime.UtcNow, Status = VacationRequestStatus.Approved, EmployeeId = employeeId, }; target.Add(vacationRequest); int actual = context.VacationRequests.Count(); Assert.AreEqual(expected, actual); }
/// <summary> /// Sends an email notifiying a new vacation request /// </summary> /// <param name="vacationRequest">The vacation request.</param> public void NotifyNewVacationRequest(VacationRequest vacationRequest) { try { var employee = _employeeRepository.Get(vacationRequest.EmployeeId); string employeeFullName = String.Format("{0} {1}", employee.FirstName, employee.LastName); string baseUrl = GetBaseUrl(); var substitutions = new Dictionary <string, string>(); substitutions.Add("APPLICATIONURL", baseUrl); substitutions.Add("TEAMVACATIONURL", String.Format("{0}?teamVacation", baseUrl)); substitutions.Add("EMPLOYEENAME", employeeFullName); if (employee.Team != null && employee.Team.Manager != null) { SendTemplate( String.Format("{0} {1}", employee.Team.Manager.FirstName, employee.Team.Manager.LastName), employee.Team.Manager.Email, "NewVacationRequest", string.Format("[{0}] New vacation requested by {1}", vacationRequest.VacationRequestId, employeeFullName), substitutions, new string[] { "logo.png" } ); } } catch (Exception ex) { TraceManager.TraceError(ex); } }
public async Task <IActionResult> Edit(Guid id, [Bind("DaysVacation,StartVacationDate,EndVacationDate,City,Street,PhoneNumber,NameAssignee,Agree,VacationType,ID,CreatedDate,UserID")] VacationRequest vacationRequest) { if (id != vacationRequest.ID) { return(NotFound()); } if (ModelState.IsValid) { try { vacationRequest.UpdatedDate = DateTime.UtcNow; _context.Update(vacationRequest); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!VacationRequestExists(vacationRequest.ID)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } ViewData["UserID"] = new SelectList(_context.Users, "Id", "Id", vacationRequest.UserID); return(View(vacationRequest)); }
public async Task <IActionResult> Edit(int id, [Bind("id,FirstName,LastName,Destination,Budget,DestinationDetails,PhoneNumber,email")] VacationRequest vacationRequest) { if (id != vacationRequest.id) { return(NotFound()); } if (ModelState.IsValid) { try { _context.Update(vacationRequest); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!VacationRequestExists(vacationRequest.id)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } return(View(vacationRequest)); }
public JsonResult RejectVacationRequest(VacationRequest vacationRequest) { var spContext = SharePointContextProvider.Current.GetSharePointContext(HttpContext); setStatus(spContext, vacationRequest, "Rejected"); return(new JsonResult()); }
public ActionResult Create(VacationRequestVM requestVM, int id) { try { requestVM.Id = 0; requestVM.EmployeeId = id; requestVM.EmployeeName = _db.Employees.Find(requestVM.EmployeeId).fullname; requestVM.VacationTypeName = _db.VacationTypes.Find(requestVM.VacationTypeId).Name; requestVM.DateRequested = DateTime.Now; requestVM.Status = false; requestVM.Cancelled = false; var vacationtypes = _db.VacationTypes.Select(q => new SelectListItem { Text = q.Name, Value = q.Id.ToString() }); requestVM.vacationtypes = vacationtypes; VacationRequest request = Map(requestVM); _db.VacationRequests.Add(request); _db.SaveChanges(); return(RedirectToAction(nameof(Index))); } catch (Exception ex) { ModelState.AddModelError("", "Something went wrong..."); return(View(requestVM)); } }
VacationRequest BuildVacationRequest(VacationRequest vacationRequest) { return(new VacationRequest() { VacationRequestId = vacationRequest.VacationRequestId, From = vacationRequest.From, To = vacationRequest.To, NumDays = vacationRequest.NumDays, Comments = vacationRequest.Comments, CreationDate = vacationRequest.CreationDate, LastModifiedDate = vacationRequest.LastModifiedDate, Status = vacationRequest.Status, EmployeeId = vacationRequest.EmployeeId, Employee = new Employee() { EmployeeId = vacationRequest.Employee.EmployeeId, FirstName = vacationRequest.Employee.FirstName, LastName = vacationRequest.Employee.LastName, JobTitle = vacationRequest.Employee.JobTitle, Email = vacationRequest.Employee.Email, TeamId = vacationRequest.Employee.TeamId, EmployeePictures = vacationRequest.Employee.EmployeePictures != null?vacationRequest.Employee.EmployeePictures .Select(ep => new EmployeePicture() { Employee = null, PictureType = ep.PictureType, EmployeePictureId = ep.EmployeePictureId, EmployeeId = ep.EmployeeId, Content = ep.Content }).ToList() : null, }, }); }
public async Task CreateVacationRequest(VacationRequest vacationRequest) { var holidayDates = new List <DateTime>(); for (int year = vacationRequest.StartTime.Year; year <= vacationRequest.EndTime.Year; year++) { holidayDates.AddRange((await _holidayHelper.GetHolidays(year))?.Dates); } const string cmd = "[spCreateVacationRequest]"; var param = new DynamicParameters(new { userId = vacationRequest.UserId, startTime = vacationRequest.StartTime, endTime = vacationRequest.EndTime, annotation = vacationRequest.Annotation, holidays = holidayDates.ToDayDataTable().AsTableValuedParameter() }); param.Add("@result", direction: ParameterDirection.ReturnValue); using (var con = _dbHelper.GetConnection()) { con.Execute(cmd, param, commandType: CommandType.StoredProcedure); var result = param.Get <int>("result"); } }
public void VacationNotificationServiceTests_WithDeniedStatus_EmailNotifyStatusChange_Denied_Test() { var emailer = new Common.Notification.Fakes.StubIEmailer() { InstanceObserver = new StubObserver() }; var templatesRepository = new Common.Notification.Fakes.StubIEmailTemplatesRepository(); var employeesRepository = new Data.Repositories.Fakes.StubIEmployeeRepository(); employeesRepository.GetInt32 = (id) => { return(new Employee() { EmployeeId = id, FirstName = "My", LastName = "Employee", Email = "*****@*****.**" }); }; VacationNotificationService service = new VacationNotificationService(emailer, templatesRepository, employeesRepository); VacationRequest vacationRequest = new VacationRequest() { Status = VacationRequestStatus.Denied }; service.NotifyStatusChange(vacationRequest, string.Empty); var observer = (StubObserver)emailer.InstanceObserver; Assert.AreEqual(1, observer.GetCalls().Count(c => c.StubbedMethod.Name == "Send")); }
public void ManagerManager_ApproveRequest() { AutoMapperConfig.Configure(); // mock Repo logic var vacationRepo = new Mock <IGenericRepository <VacationRequest> >(); var userRepo = new Mock <IGenericRepository <User> >(); var uoW = new Mock <IUnitOfWork>(); uoW.Setup(x => x.VacationRepo).Returns(vacationRepo.Object); uoW.Setup(x => x.UserRepo).Returns(userRepo.Object); var managerManager = new ManagerManager(uoW.Object); var dbStub = new VacationRequest() { Id = 1, UserId = 2, StartDate = new DateTime(2017, 05, 20) }; var userStub = new User() { Id = 2, LastName = "Tarbinskyi", FirstName = "Viacheslav" }; userRepo.Setup(x => x.GetByID(It.IsAny <int>())).Returns(userStub); vacationRepo.Setup(x => x.GetByID(It.IsAny <int>())).Returns(dbStub); managerManager.ApproveRequest(1, 2); Assert.AreEqual(dbStub.ApprovedBy, "Tarbinskyi Viacheslav"); Assert.AreEqual(dbStub.Status, Status.Approved); }
/// <summary> /// <see cref="MyCompany.Vacation.Data.Repositories.IVacationRequestRepository"/> /// </summary> /// <param name="vacationRequest"><see cref="MyCompany.Vacation.Data.Repositories.IVacationRequestRepository"/></param> /// <returns><see cref="MyCompany.Vacation.Data.Repositories.IVacationRequestRepository"/></returns> public int Add(VacationRequest vacationRequest) { Employee employee; employee = _context.Employees.FirstOrDefault(e => e.EmployeeId == vacationRequest.EmployeeId); if (null == employee) { throw new Exception("Employee does not exist"); } vacationRequest.CreationDate = DateTime.Now.ToUniversalTime(); vacationRequest.LastModifiedDate = vacationRequest.CreationDate; vacationRequest.Status = VacationRequestStatus.Pending; int employeePendingVacations = GetUserPendingVacation(employee.Email, vacationRequest.From.Year); vacationRequest.NumDays = GetVacationNumDays(vacationRequest); if ((employeePendingVacations - vacationRequest.NumDays) < 0) { throw new Exception("Maximum number days exceeded"); } _context.VacationRequests.Add(vacationRequest); _context.SaveChanges(); if (_eventBusEnabled) { var dto = Mapper.Map <VacationRequestDTO>(vacationRequest); _eventBus.Publish <VacationRequestDTO>(dto, VacationActions.AddVacation); } return(vacationRequest.VacationRequestId); }
public int Add(VacationRequest vacationRequest) { TraceManager.TraceError("Add vacation request"); if (vacationRequest == null) { throw new ArgumentNullException("vacationRequest"); } var employee = _employeeRepository.GetByEmail(_securityHelper.GetUser(), PictureType.Small); vacationRequest.EmployeeId = employee.EmployeeId; var newVacationRequestId = _vacationRequestRepository.Add(vacationRequest); var newVacationRequest = _vacationRequestRepository.Get(newVacationRequestId); TraceManager.TraceError("before if and Calling notify new in VacationHub"); if (employee.Team != null && employee.Team.Manager != null) { TraceManager.TraceError("Calling notify new in VacationHub"); VacationNotificationHub.NotifyNew(newVacationRequest, employee.Team.Manager.Email); } _vacationNotificationService.NotifyNewVacationRequest(vacationRequest); return(newVacationRequest.VacationRequestId); }
public VacationRequest Get(Guid id) { VacationRequest request = null; _data.TryGetValue(id, out request); return(request); }
public VacationRequest RejectVacationRequest(VacationRequest request) { VacationRequest vacationRequest = request; vacationRequest.Approved = false; vacationRequestRepository.Update(request); return(vacationRequest); }
public VacationRequest SendVacationRequest(VacationRequest request) { VacationRequest fullRequest = request; vacationRequestRepository.Create(request); notificationService.NewVacationRequest(fullRequest.employee); return(request); }
public VacationRequest ApproveVacationRequest(VacationRequest request) { VacationRequest vacationRequest = request; vacationRequest.Approved = true; vacationRequestRepository.Update(request); return(vacationRequest); }
//Zorgt ervoor dat data in de view wordt geladen van het desbetreffende verlofaanvraag public EditModel(VacationRequest vacreq) { VacationID = vacreq.VacationID; UserId = vacreq.UserID; Reason = vacreq.Reason; BeginDate = vacreq.BeginDate; EndDate = vacreq.EndDate; }
public List <VacationRequest> RemoveRequest(int id) { VacationRequest vacationRequest = Context.VacationRequests.Single(u => u.Id == id); Context.VacationRequests.Remove(vacationRequest); Context.SaveChanges(); return(GetUserRequests(vacationRequest.UserId)); }
public VacationRequest UpdateRequest(VacationRequest request, VacationType?vacationType = null, DateTime?startDate = null, DateTime?endDate = null, TimeZoneInfo timeZoneInfo = null) { request = request.Clone; request.Type = vacationType ?? request.Type; request.StartData = startDate ?? request.StartData; request.EndData = endDate ?? request.EndData; request.TimeZone = timeZoneInfo ?? request.TimeZone; return(request); }
// GET: VacationRequestController/Details/5 public ActionResult Review(int id) { VacationRequestVM request = new VacationRequestVM(); VacationRequest vacationrequest = _db.VacationRequests.Include(q => q.Employee).Include(q => q.VacationType).FirstOrDefault(q => q.Id == id); request = ReverseMap(vacationrequest); return(View(request)); }
// GET: VacationRequestController/Delete/5 public ActionResult Delete(int id) { VacationRequest request = _db.VacationRequests.Find(id); _db.VacationRequests.Remove(request); _db.SaveChanges(); return(RedirectToAction(nameof(Index))); }
public async Task <ActionResult> Create(VacationRequest item) { using (HttpClient client = new HttpClient()) { client.BaseAddress = new Uri("https://df86.azurewebsites.net"); var httpContent = new StringContent(JsonConvert.SerializeObject(item), Encoding.UTF8, "application/json"); await client.PostAsync("api/OrcClient", httpContent); } return(View("Index")); }
public void DeleteVacationRequest(Guid id) { VacationRequest vacationRequestToDeleteDb = dbContext.VacationRequests.FirstOrDefault(x => x.IDVacationRequest == id); if (vacationRequestToDeleteDb != null) { dbContext.VacationRequests.DeleteOnSubmit(vacationRequestToDeleteDb); dbContext.SubmitChanges(); } }
//POST:Status public ActionResult RejectRequest(int id) { VacationRequest request = _db.VacationRequests.Find(id); request.Status = false; _db.VacationRequests.Update(request); _db.SaveChanges(); return(RedirectToAction(nameof(Index))); }
public VacationRequest VacationRequestRejection(VacationRequest vacreq) { vacreq.ReasonRejection = RejectionReason; vacreq.AssessedByID = SecurityHelper.GetUserId(); vacreq.IsApproved = false; vacreq.IsInTreatment = false; vacreq.IsRejected = true; return(vacreq); }
private static void UploadVacationToService(IVTSService vtsService, VacationRequest vacation) { var existingVacation = vtsService.GetVacation(vacation.Id).Result; Assert.That(existingVacation, Is.Null); var reloadedVacation = vtsService.UpdateVacation(vacation).Result.Vacation; Assert.That(reloadedVacation.Id, Is.EqualTo(vacation.Id)); }
public void Reject(long vacreqid, long assessedbyid) { VacationRequest vacreq = Get(vacreqid); vacreq.AssessedByID = assessedbyid; vacreq.IsApproved = false; vacreq.IsRejected = true; vacreq.IsInTreatment = false; Save(vacreq); }
private int GetVacationNumDays(VacationRequest vacationRequest) { Employee employee; employee = _context.Employees.Single(e => e.EmployeeId == vacationRequest.EmployeeId); int numDays = _workingDaysCalculator.GetWorkingDays(employee.OfficeId, vacationRequest.From, vacationRequest.To); return(numDays); }