Esempio n. 1
0
        /// <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();
        }
Esempio n. 3
0
        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));
        }
Esempio n. 6
0
        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));
        }
Esempio n. 7
0
        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));
            }
        }
Esempio n. 9
0
 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,
         },
     });
 }
Esempio n. 10
0
        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"));
        }
Esempio n. 12
0
        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);
        }
Esempio n. 13
0
        /// <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);
        }
Esempio n. 15
0
        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);
        }
Esempio n. 19
0
 //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));
        }
Esempio n. 21
0
 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)));
        }
Esempio n. 24
0
 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)));
        }
Esempio n. 27
0
        public VacationRequest VacationRequestRejection(VacationRequest vacreq)
        {
            vacreq.ReasonRejection = RejectionReason;
            vacreq.AssessedByID    = SecurityHelper.GetUserId();
            vacreq.IsApproved      = false;
            vacreq.IsInTreatment   = false;
            vacreq.IsRejected      = true;

            return(vacreq);
        }
Esempio n. 28
0
        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);
        }
Esempio n. 30
0
        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);
        }