//Сжигает неиспользованые дни отпуска для каждого типа за один год после отступа countYearsBeforeBurn //основываясь на истории заявок private void BurnOldYearInUserVacationDays(string userEmail, DateTime lastUpdate) { using (ApplicationDbContext context = new ApplicationDbContext()) { ApplicationUser user = context.Users.Where(m => m.Email == userEmail).First(); List <UserVacationDays> userVacations = context.UserVacationDays.Where(m => m.User.Id == user.Id).ToList(); if ((lastUpdate - user.EmploymentDate).Days >= daysInYear * (countYearsBeforeBurn)) { RequestStatuses requestStatus = context.RequestStatuses.Where(p => p.Id == 1).First(); var userHistory = GetSumUserHistoryVacation(user.Email, requestStatus, true, lastUpdate.AddYears(-countYearsBeforeBurn), lastUpdate.AddYears(-countYearsBeforeBurn + 1)); foreach (var userVac in userVacations) { for (int i = 0; i < userHistory.Count; i++) { if (userHistory[i].VacationType.Name == userVac.VacationType.Name) { //Тернарный оператор для защиты от некорректного поведения в случае //если пользователь воспользуется днями начисленными администратором int result = userVac.VacationType.MaxDays - userHistory[i].VacationDays; userVac.VacationDays -= result >= 0 ? result : 0; } } } } context.SaveChanges(); } }
public static BookingRequest ChangeRequestStateIfFound(string requestId, RequestStatuses newStatus) { try { var currentRequestStatus = GetRequestStatus(requestId); var currentRequest = ServiceRequests[currentRequestStatus][requestId]; ServiceRequests[currentRequestStatus].Remove(requestId); if (ServiceRequests[newStatus].ContainsKey(requestId)) { ServiceRequests[newStatus][requestId] = currentRequest; } else { ServiceRequests[newStatus].Add(requestId, currentRequest); } currentRequest.Status = newStatus; return(currentRequest); } catch (InvalidOperationException) { return(null); } }
private void GivenOneEpisodeOfStatus(RequestStatuses status, RequestStatuses allOtherEpisodeStatus) { _request = new TvRequestRowBuilder().WithTrack(false).Build(); SetEpisodeStatuses(allOtherEpisodeStatus); _request.TvRequestSeasons.ElementAt(0).TvRequestEpisodes.ElementAt(0).RequestStatus = status; }
public TvRequestEpisodeRowBuilder() { _tvRequestEpisodeId = new Random().Next(1, int.MaxValue); _title = Guid.NewGuid().ToString(); _episodeIndex = 1; _requestStatus = RequestStatuses.PendingApproval; _imagePath = Guid.NewGuid().ToString(); _airDateUtc = null; }
private void SetEpisodeStatuses(RequestStatuses status) { foreach (var season in _request.TvRequestSeasons) { foreach (var episode in season.TvRequestEpisodes) { episode.RequestStatus = status; } } }
private static void SetEpisodeStatus(TvRequestRow request, RequestStatuses status) { foreach (var season in request.TvRequestSeasons) { foreach (var episode in season.TvRequestEpisodes) { episode.RequestStatus = status; } } }
private void AggregateStatus_Sets_Status_When_All_Of_Same_Status(RequestStatuses status) { this.Given(x => x.GivenAllRequestEpisodesOfStatus(status)) .When(x => x.WhenACommandActionIsCreated()) .Then(x => x.ThenTheCommandSucceeds()) .Then(x => x.ThenSeasonStatusIsCorrect(1, status)) .Then(x => x.ThenSeasonStatusIsCorrect(2, status)) .Then(x => x.ThenSeasonStatusIsCorrect(3, status)) .Then(x => x.ThenOverallStatusIsCorrect(status)) .BDDfy(); }
//userEmail - email или логин пользователя //targetStatus - сортировка по статусу (если предать null то сортировки по статусу не будет) //allChainInStatus - цепочка подтверждений целиком состоит из targetStatus? //lowerLimit - нижняя временная граница (включена) //upperLimit - верхняя временная граница (включена) //Возвращает лист с суммой дней по каждому типу заявки public List <UserVacationDays> GetSumUserHistoryVacation(string userEmail, RequestStatuses targetStatus, bool allChainInStatus, DateTime lowerLimit, DateTime upperLimit) { using (ApplicationDbContext context = new ApplicationDbContext()) { ApplicationUser user = context.Users.Where(m => m.Email == userEmail).First(); List <VacationTypes> vacationTypes = context.VacationTypes.ToList(); List <Requests> userRequests = context.Requests.Where(m => m.Employee.Id == user.Id).OrderBy(o => o.DateStart).ToList(); List <UserVacationDays> sumDays = new List <UserVacationDays>(); //Заполняем лист всеми возможными типами отпуска foreach (var item in vacationTypes) { sumDays.Add(new UserVacationDays { User = user, VacationDays = 0, VacationType = item }); } foreach (var hVac in userRequests) { if (hVac.DateStart.Date >= lowerLimit.Date && hVac.DateStart.Date <= upperLimit.Date) { for (int i = 0; i < sumDays.Count; i++) { if (sumDays[i].VacationType.Name == hVac.VacationTypes.Name) { //Добавляем 1 день для того что бы обе границы были включительны if (targetStatus == null) { sumDays[i].VacationDays += ((hVac.DateEnd.Date.AddDays(1)) - hVac.DateStart.Date).Days; } else if (allChainInStatus && DoesAllChainContainSatus(context, targetStatus, hVac)) { sumDays[i].VacationDays += ((hVac.DateEnd.Date.AddDays(1)) - hVac.DateStart.Date).Days; } else if (!allChainInStatus && DoesChainContainStatus(context, targetStatus, hVac)) { sumDays[i].VacationDays += ((hVac.DateEnd.Date.AddDays(1)) - hVac.DateStart.Date).Days; } } } } } return(sumDays); } }
private bool DoesAllChainContainSatus(ApplicationDbContext context, RequestStatuses type, Requests request) { List <RequestChecks> requestChecks = context.RequestChecks.Where(m => m.Request.Id == request.Id).ToList(); if (requestChecks.Count == 0) { return(false); } foreach (var check in requestChecks) { if (check.Status.Id != type.Id) { return(false); } } return(true); }
public TvRequestRowBuilder() { _tvRequestId = new Random().Next(1, int.MaxValue); _theMovieDbId = new Random().Next(1, int.MaxValue); _title = Guid.NewGuid().ToString(); _requestStatus = RequestStatuses.PendingApproval; _imagePath = Guid.NewGuid().ToString(); _airDateUtc = null; _track = false; _comment = null; _tvRequestSeasonBuilders = new List <TvRequestSeasonRowBuilder>(); _tvRequestUserBuilders = new List <TvRequestUserRowBuilder>(); _tvRequestAgentBuilders = new List <TvRequestAgentRowBuilder>(); _mediaItemBuilder = new TvPlexMediaItemRowBuilder(); WithTvRequestSeasons(); WithTvRequestUsers(); WithTvRequestAgents(); }
public static IEnumerable <BookingRequest> GetRequestsWithStatus(RequestStatuses status) { return(ServiceRequests[status].Values); }
private void GivenTrackedRequest(RequestStatuses status) { _request = new TvRequestRowBuilder().WithTrack(true).WithRequestStatus(status).Build(); }
private void GivenAllRequestEpisodesOfStatus(RequestStatuses status) { _request = new TvRequestRowBuilder().WithTrack(false).Build(); SetEpisodeStatuses(status); }
private void ThenUpdatedRequestShouldBeCorrect(RequestStatuses expectedStatus) { _request.Should().NotBeNull(); _request.RequestStatus.Should().Be(expectedStatus); }
private void AggregateStatus_Sets_Status_To_PartialApproval_When_At_least_One_Episode_Approved(RequestStatuses allOtherEpisodeStatuses) { this.Given(x => x.GivenOneEpisodeOfStatus(RequestStatuses.Approved, allOtherEpisodeStatuses)) .When(x => x.WhenACommandActionIsCreated()) .Then(x => x.ThenTheCommandSucceeds()) .Then(x => x.ThenSeasonStatusIsCorrect(1, RequestStatuses.PartialApproval)) .Then(x => x.ThenSeasonStatusIsCorrect(2, allOtherEpisodeStatuses)) .Then(x => x.ThenSeasonStatusIsCorrect(3, allOtherEpisodeStatuses)) .Then(x => x.ThenOverallStatusIsCorrect(RequestStatuses.PartialApproval)) .BDDfy(); }
private void CreateOld(ApplicationDbContext context) { var userManager = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(context)); ApplicationUser old = new ApplicationUser { UserName = "******", Email = "*****@*****.**", FullName = "OLD", EmploymentDate = new DateTime(2015, 4, 4) }; //context.Users.Add(old); if (userManager.Create(old, "123456-Pass").Succeeded) { userManager.AddToRole(old.Id, "Employee"); } var managerRole = context.Roles.Where(x => x.Name == "Manager").First(); List <ApplicationUser> allManagers = context.Users.Where(x => x.FullName == "Manager").ToList(); //List<VacationTypes> vacationsType = context.VacationTypes.ToList(); VacationTypes specialVacationType = new VacationTypes() { Name = "ForOld", MaxDays = 30 }; context.VacationTypes.Add(specialVacationType); RequestStatuses statusSuccess = context.RequestStatuses.Where(x => x.Id == 1).First(); string description = "Special for me №"; int i = 0; for (DateTime date = old.EmploymentDate.AddDays(7); date < DateTime.Now; date = date.AddMonths(3)) { i++; Requests requests = new Requests() { Employee = old, VacationTypes = specialVacationType, DateStart = date, DateEnd = date.AddDays(i), Description = description + i }; context.Requests.Add(requests); int j = 0; foreach (var item in allManagers) { j++; RequestChecks requestChecks = new RequestChecks() { Request = requests, Priority = j, Status = statusSuccess, Approver = item }; context.RequestChecks.Add(requestChecks); } } }
private void CreateTestRequest(ApplicationDbContext context) { //@ ApplicationUser startPerson = new ApplicationUser { UserName = "******", Email = "*****@*****.**", FullName = "Employee", EmploymentDate = DateTime.Now.Date }; var userManager = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(context)); if (userManager.Create(startPerson, "123456-Pass").Succeeded) { userManager.AddToRole(startPerson.Id, "Employee"); } //@ //@ ApplicationUser startPerson2 = new ApplicationUser { UserName = "******", Email = "*****@*****.**", FullName = "Employee", EmploymentDate = DateTime.Now.Date }; var userManager12 = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(context)); if (userManager12.Create(startPerson2, "123456-Pass").Succeeded) { userManager12.AddToRole(startPerson2.Id, "Employee"); } //@ //@ ApplicationUser startManager = new ApplicationUser { UserName = "******", Email = "*****@*****.**", FullName = "Manager", EmploymentDate = DateTime.Now.Date }; var userManager2 = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(context)); if (userManager2.Create(startManager, "123456-Pass").Succeeded) { userManager2.AddToRole(startManager.Id, "Manager"); } //@ //@ ApplicationUser middleManager = new ApplicationUser { UserName = "******", Email = "*****@*****.**", FullName = "Manager", EmploymentDate = DateTime.Now.Date }; var userManager3 = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(context)); if (userManager3.Create(middleManager, "123456-Pass").Succeeded) { userManager3.AddToRole(middleManager.Id, "Manager"); } //@ //@ ApplicationUser endManager = new ApplicationUser { UserName = "******", Email = "*****@*****.**", FullName = "Manager", EmploymentDate = DateTime.Now.Date }; var userManager4 = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(context)); if (userManager4.Create(endManager, "123456-Pass").Succeeded) { userManager4.AddToRole(endManager.Id, "Manager"); } // Тестовый тип отпуска var vacationType = new VacationTypes() { Name = "Тестовый", MaxDays = 10 }; Requests requests = new Requests() { Employee = startPerson, VacationTypes = vacationType, DateStart = DateTime.Now.Date, DateEnd = DateTime.Now.AddDays(5), Description = "Хочу в отпуск" }; context.Requests.Add(requests); Requests requests2 = new Requests() { Employee = startPerson2, VacationTypes = vacationType, DateStart = DateTime.Now.Date.AddDays(2), DateEnd = DateTime.Now.AddDays(7), Description = "Друг идет в армию" }; context.Requests.Add(requests2); // Зависимость в ManageController.cs RequestStatuses status = new RequestStatuses() { Name = "Ожидание1" }; RequestChecks requestChecks = new RequestChecks() { Request = requests, Priority = 1, Status = status, Approver = startManager }; RequestChecks requestChecks1 = new RequestChecks() { Request = requests, Priority = 2, Status = status, Approver = middleManager }; RequestChecks requestChecks2 = new RequestChecks() { Request = requests, Priority = 3, Status = status, Approver = endManager }; RequestChecks requestChecks3 = new RequestChecks() { Request = requests2, Priority = 1, Status = status, Approver = startManager }; context.RequestChecks.Add(requestChecks3); context.RequestChecks.AddRange(new List <RequestChecks>() { requestChecks, requestChecks1, requestChecks2 }); }
private void GivenOverallRequestStatusIs(RequestStatuses status) { _request.RequestStatus = status; }
public IActionResult TrackService(EmbassyLetterViewModel modelview) { var _user = new AuthenticateResponse { MembershipKey = 1006979, //1007435, EmailAddress = "*****@*****.**", //"*****@*****.**", FirstName = "Tolulope", LastName = "Olusakin", FullName = "Olusakin Tolulope S"//"Funmilayo Ruth Adeyemi", }; var model = new TrackServiceViewModel(); if (_user == null) { TempData["SessionTimeOut"] = "You have been logged out due to inactivity. Please login to gain access."; return(RedirectToAction("Login", "Account")); } try { model.RequestType = modelview.SelfService.RequestType; model.TrackingNumber = modelview.SelfService.TrackingNumber; var trRequest = new TrackServiceRequest { MembershipNumber = _user.MembershipKey, RequestType = model.RequestType, TrackingNumber = model.TrackingNumber }; List <RequestStatuses> getStatus = new List <RequestStatuses>(); var trResponse = _clientService.TrackService(trRequest); if (trResponse.RequestStatuses != null && trResponse.RequestStatuses.Count > 0) { foreach (var req in trResponse.RequestStatuses) { var status = new RequestStatuses(); status.MembershipNumber = req.MembershipNumber; status.Remark = req.Remark; status.CurrentStatus = req.CurrentStatus; status.RequestDescription = req.RequestDescription; status.TrackingNumber = req.TrackingNumber; getStatus.Add(status); } } //model.RequestStatuses = getStatus; var serializeStatus = JsonConvert.SerializeObject(getStatus); TempData["TrackService"] = serializeStatus; return(RedirectToAction("EmbassyLetter", "SelfService")); } catch (Exception ex) { Utilities.ProcessError(ex, _contentRootPath); _logger.LogError(null, ex, ex.Message); } return(View()); }
public TvRequestEpisodeRowBuilder WithRequestStatus(RequestStatuses requestStatus) { _requestStatus = requestStatus; return(this); }
private void ThenOverallStatusIsCorrect(RequestStatuses expectedStatus) { _request.RequestStatus.Should().Be(expectedStatus); }
private void GivenARequestIsFoundWithStatus(RequestStatuses status) { _requestToUpdate = new MovieRequestRowBuilder().WithRequestStatus(status).Build(); _requestService.GetRequestById(Arg.Any <int>()).Returns(_requestToUpdate); }
private void ThenSeasonStatusIsCorrect(int season, RequestStatuses expectedStatus) { _request.TvRequestSeasons.ElementAt(season - 1).RequestStatus.Should().Be(expectedStatus); }