コード例 #1
0
ファイル: PeriodRunner.cs プロジェクト: AngelMunoz/Trackmat
        public int Show(ShowPeriodArgs opts)
        {
            if (!opts.All && string.IsNullOrEmpty(opts.EzName))
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("You must provide either \"-a\" or the \"-z\" flags");
                Console.WriteLine("Ex. [show-period -a -p 1 -l 10] or [show-period -d -z s5]");
                Console.ResetColor();
                return((int)ExitCodes.MissingArguments);
            }
            using var periods = new PeriodService();
            if (opts.All)
            {
                return(FindAllPeriods(opts.Pagination, opts.Detailed));
            }

            try
            {
                return(FindSpecificPeriod((opts.EzName, opts.Detailed), periods));
            }
            catch (Exception e)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine($"Failed to show period. {e.Message}");
                Console.ResetColor();
                return((int)ExitCodes.FailedToShowPeriod);
            }
        }
コード例 #2
0
ファイル: PeriodRunner.cs プロジェクト: AngelMunoz/Trackmat
 public int Create(Period period)
 {
     using (var periods = new PeriodService())
     {
         if (periods.Exists(period.EzName))
         {
             Console.ForegroundColor = ConsoleColor.Yellow;
             Console.WriteLine($"A period with the Easy Name: \"{period.EzName}\" already exists!");
             Console.WriteLine($"Please run \"trackmat show-period -z {period.EzName}\" to see it");
             Console.ResetColor();
             return((int)ExitCodes.PeriodExists);
         }
         try
         {
             period.Items = new List <TrackItem>();
             var created = periods.Create(period);
             Console.ForegroundColor = ConsoleColor.Green;
             Console.WriteLine($"Saved [{created.Id} - {created.Name}] Successfully \n{created}");
             Console.ResetColor();
         }
         catch (Exception e)
         {
             Console.ForegroundColor = ConsoleColor.Red;
             Console.WriteLine($"Failed to Create {period.Name}. {e.Message}");
             Console.ResetColor();
             return((int)ExitCodes.FailedToCreateItem);
         }
         return((int)ExitCodes.Success);
     }
 }
コード例 #3
0
        public IActionResult Period(int?id, [FromQuery] int dayId)
        {
            if (dayId == 0)
            {
                return(BadRequest());
            }

            PeriodDto periodDto;

            if (id != null)
            {
                periodDto = PeriodService.GetPeriod(id.Value);
                if (periodDto == null)
                {
                    return(NotFound());
                }
                if (periodDto.SchoolDayId != dayId)
                {
                    return(BadRequest());
                }
            }
            else
            {
                periodDto = new PeriodDto
                {
                    SchoolDayId = dayId,
                    Number      = Shared.Enums.PeriodNumber.First
                };
            }

            var periodBindingModel = Mapper.Map <PeriodBindingModel>(periodDto);
            var periodViewModel    = new PeriodViewModel(periodBindingModel, id);

            return(View(periodViewModel));
        }
コード例 #4
0
        public IActionResult Period(int?id, [FromForm] PeriodBindingModel period)
        {
            if (period.SchoolDayId == 0)
            {
                return(BadRequest());
            }

            var periodDto = Mapper.Map <PeriodDto>(period);

            ServiceResult serviceResult = PeriodService.AddOrUpdatePeriod(periodDto, id);

            if (serviceResult.Result == Result.Error)
            {
                foreach (var error in serviceResult.Errors)
                {
                    ModelState.AddModelError(error.Key, error.Message);
                }

                if (!ModelState.IsValid)
                {
                    var periodViewModel = new PeriodViewModel(period, id);
                    return(View(periodViewModel));
                }
            }
            else if (serviceResult.Result == Result.NotFound)
            {
                return(NotFound());
            }

            int subjectId = serviceResult.Id;

            return(RedirectToSubject(subjectId));
        }
コード例 #5
0
        private async Task TypeChanged(TaskType type, bool refreshState)
        {
            Periods        = new List <PeriodDto>();
            SourceSubjects = new List <SubjectDto>();
            switch (type)
            {
            case TaskType.Period:
                Periods = await PeriodService.GetList();

                break;

            case TaskType.Subject:
                Periods = await PeriodService.GetList();

                SourceSubjects = await SubjectService.GetList();

                break;
            }

            AddType = type;

            if (refreshState)
            {
                StateHasChanged();
            }
        }
コード例 #6
0
        public void Can_Test_If_A_Given_ReportingPeriod_Is_Current(
            int currentYear,
            int currentMonth,
            int currentDay,
            string comparisonPeriodShortFormat,
            bool expectedComparisonResult)
        {
            var comparisonPeriod = Period.ParsePeriodString(comparisonPeriodShortFormat);

            var mockDateTimeService = new Mock <IDateTimeService>();

            mockDateTimeService
            .Setup(
                m => m.UtcNow)
            .Returns(
                DateTime
                .SpecifyKind(
                    new DateTime(currentYear, currentMonth, currentDay),
                    DateTimeKind.Utc));

            var SUT = new PeriodService(mockDateTimeService.Object);

            SUT
            .PeriodIsCurrent(comparisonPeriod)
            .Should()
            .Be(expectedComparisonResult);
        }
コード例 #7
0
        public void Can_Provide_A_Current_Reporting_Period(
            int currentYear,
            int currentMonth,
            int currentDay,
            string expectedPeriodShortForm)
        {
            var mockDateTimeService = new Mock <IDateTimeService>();

            mockDateTimeService
            .Setup(
                m => m.UtcNow)
            .Returns(
                DateTime
                .SpecifyKind(
                    new DateTime(currentYear, currentMonth, currentDay),
                    DateTimeKind.Utc));

            var SUT = new PeriodService(mockDateTimeService.Object);

            SUT
            .GetCurrentPeriod()
            .PeriodString
            .Should()
            .Be(expectedPeriodShortForm);
        }
コード例 #8
0
ファイル: PeriodRunner.cs プロジェクト: AngelMunoz/Trackmat
        public int DeletePeriod(DeletePeriodArgs args)
        {
            Period found;

            using (var periods = new PeriodService())
            {
                found = periods.FindOne(args.EzName);
                if (found == null)
                {
                    return((int)ExitCodes.PeriodNotFound);
                }
            }

            ConsoleKeyInfo key = new ConsoleKeyInfo();

            if (args.Dissociate)
            {
                key = new ConsoleKeyInfo('Y', ConsoleKey.Y, false, false, false);
            }
            while (key.Key != ConsoleKey.Y && key.Key != ConsoleKey.Enter)
            {
                Console.WriteLine($"Found Period\n{found}");
                Console.ForegroundColor = ConsoleColor.Yellow;
                Console.WriteLine($"Are you sure you want to dissociate the following items? [Y/n]");
                Console.ResetColor();
                var joined = found.Items.Aggregate("", (prev, next) => $"{(string.IsNullOrEmpty(prev) ? $"{prev}" : $"{prev}\n")}{next}");
                Console.ForegroundColor = ConsoleColor.Blue;
                Console.WriteLine($"({joined})");
                Console.ResetColor();
                key = Console.ReadKey();
                if (key.Key == ConsoleKey.N)
                {
                    return((int)ExitCodes.Success);
                }
            }
コード例 #9
0
 public void StartUp()
 {
     homepath = Path.Combine(Path.GetTempPath(), "trackmat");
     Directory.CreateDirectory(homepath);
     _db      = new LiteDatabase(Path.Combine(homepath, "trackmat.db"));
     _items   = new TrackItemService(_db);
     _periods = new PeriodService(_db);
 }
コード例 #10
0
ファイル: AdminPeriod.razor.cs プロジェクト: fphgov/varolista
        protected async Task HandleSubmit()
        {
            PeriodVMEditContext = new EditContext(AdminPeriodVM);

            if (PeriodVMEditContext.Validate())
            {
                var period = (await PeriodService.GetAsync(x => x.Year == AdminPeriodVM.PeriodeStartDate.Year)).FirstOrDefault();

                if (period != null)
                {
                    period.Description      = AdminPeriodVM.Description.Trim();
                    period.PeriodeStartDate = AdminPeriodVM.PeriodeStartDate;
                    period.PeriodeEndDate   = AdminPeriodVM.PeriodeEndDate;
                    period.PeriodValue      = (decimal)AdminPeriodVM.PeriodValue;
                    PeriodService.Update(period);
                }
                else
                {
                    period = new Period
                    {
                        Year             = AdminPeriodVM.PeriodeStartDate.Year,
                        Description      = AdminPeriodVM.Description.Trim(),
                        PeriodeStartDate = AdminPeriodVM.PeriodeStartDate,
                        PeriodeEndDate   = AdminPeriodVM.PeriodeEndDate,
                        PeriodValue      = (decimal)AdminPeriodVM.PeriodValue,
                        BudgetFrames     = new List <BudgetFrame>()
                    };

                    var regions = await RegionService.GetAsync();

                    var services = await ServiceService.GetAsync(x =>
                                                                 x.ServiceTypeDate <= AdminPeriodVM.PeriodeStartDate &&
                                                                 x.IsActive);

                    foreach (var region in regions)
                    {
                        foreach (var service in services)
                        {
                            period.BudgetFrames.Add(
                                new BudgetFrame
                            {
                                RegionId = region.Id,
                                Year     = AdminPeriodVM.PeriodeStartDate.Year,
                                Service  = service,
                                Head     = 0,
                                Value    = 0
                            });
                        }
                    }
                    await PeriodService.AddAsync(period);
                }
                await PeriodService.SaveChangesAsync(AppUser.Instance.FullName);

                PeriodVMs = Mapper.Map <IEnumerable <PeriodVM> >(await PeriodService.GetAsync());
                ToggleView();
            }
            StateHasChanged();
        }
コード例 #11
0
ファイル: AdminPeriod.razor.cs プロジェクト: fphgov/varolista
        protected override async Task OnInitializedAsync()
        {
            nfi = (NumberFormatInfo)CultureInfo.InvariantCulture.NumberFormat.Clone();
            nfi.NumberGroupSeparator = " ";

            PeriodVMs           = Mapper.Map <IEnumerable <PeriodVM> >(await PeriodService.GetAsync());
            AdminPeriodVM       = new AdminPeriodVM();
            PeriodVMEditContext = new EditContext(AdminPeriodVM);
        }
コード例 #12
0
        protected async Task PeriodHandler(MouseEventArgs args, int year)
        {
            SelectedPeriod = year;
            await SessionStorage.SetItemAsync("Period", year);

            PageTitle = (await PeriodService.GetAsync(x => x.Year == year)).FirstOrDefault().Description;
            SetSelectedPeriod(year);
            await ControllInitialization();
            await InvokeAsync(StateHasChanged);
        }
コード例 #13
0
ファイル: AdminPeriod.razor.cs プロジェクト: fphgov/varolista
        protected async Task PeriodEditClickHandler(MouseEventArgs e, int year)
        {
            FormTitle = "Iőszak Módosítása";
            IsNew     = false;
            ToggleView();

            AdminPeriodVM = Mapper.Map <AdminPeriodVM>((await PeriodService.GetAsync(x => x.Year == year)).FirstOrDefault());
            // AdminPeriodVM.Year = year;

            PeriodVMEditContext = new EditContext(AdminPeriodVM);
            await InvokeAsync(StateHasChanged);
        }
コード例 #14
0
        public IActionResult Delete(int id, [FromQuery] int dayId)
        {
            ServiceResult result = PeriodService.DeletePeriod(id);

            if (result.Result == Result.NotFound)
            {
                return(NotFound());
            }

            bool dayApproved = SchoolDayService.IsDayApproved(dayId);

            return(Ok(new
            {
                dayApproved
            }));
        }
コード例 #15
0
        public void AddPeriodCorrectly()
        {
            var dbContext = new DbContextOptionsBuilder <ApplicationDbContext>()
                            .UseInMemoryDatabase(Guid.NewGuid().ToString());
            var repository = new EfDeletableEntityRepository <Period>(new ApplicationDbContext(dbContext.Options));

            repository.SaveChangesAsync().GetAwaiter().GetResult();

            var service = new PeriodService(repository);

            _ = service.AddAsync(new DateTime(2020, 5, 1), new DateTime(2020, 5, 5));
            var list = repository.All().ToList();

            Assert.Single(list);
            Assert.Equal(new DateTime(2020, 5, 1), list[0].ArrivalDate);
            Assert.Equal(new DateTime(2020, 5, 5), list[0].DepartDate);
        }
コード例 #16
0
        protected override async Task OnInitializedAsync()
        {
            base.OnInitialized();


            SelectedPeriod = Int32.Parse(Period);
            Periods        = (await PeriodService.GetAsync())
                             .Select(x => new DropDownData
            {
                Text     = x.Description,
                ValueInt = x.Year
            })
                             .OrderBy(x => x.ValueInt)
                             .ToList();

            await TableInitialization();
            await FormInitialization();

            await InvokeAsync(StateHasChanged);
        }
コード例 #17
0
        private async Task InitializedAsync()
        {
            AdminRegionVM       = new AdminRegionVM();
            SelectedPeriod      = Int32.Parse(Period);
            RegionFrameVMs      = (await BudgetFrameService.GetRegionFrameVM(SelectedPeriod)).RegionFrameVMs;
            RegionVMEditContext = new EditContext(AdminRegionVM);
            Services            = await ServiceService.GetAsync(x =>
                                                                x.IsActive,
                                                                y => y.OrderBy(z => z.ServiceTypeId),
                                                                "ServiceType");

            Periods = (await PeriodService.GetAsync())
                      .Select(x => new DropDownData
            {
                Text     = x.Description,
                ValueInt = x.Year
            })
                      .OrderBy(x => x.ValueInt)
                      .ToList();
        }
コード例 #18
0
        public CurrentPeriodViewModel(IEventAggregator _eventAggregator)
        {
            service = new PeriodService();
            currentPeriodService    = new CurrentPeriodService();
            SetCurrentPeriodCommand = new DelegateCommand(OnSetCurrentPeriodCommand, CanSetCurrentPeriod);

            IsCurrentPeriodSettable = false;
            dispatcher      = Deployment.Current.Dispatcher;
            eventAggregator = _eventAggregator;

            //LoadAllPeriodCompleted();
            //service.LoadAll();

            //LoadCurrentPeriodCompleted();
            //currentPeriodService.GetCurrentPeriod();

            //eventAggregator = _eventAggregator;
            //_eventAggregator.GetEvent<SetupEvent>().Subscribe(OnInitialise);

            OnInitialise("");
        }
コード例 #19
0
        private async void OpenDeleteDialog()
        {
            var parameters = new DialogParameters
            {
                {
                    "Input",
                    new ConfirmDialogInput
                    {
                        Name           = PeriodData.Name,
                        DeleteFunction = async() => await PeriodService.Remove(PeriodData.Id)
                    }
                }
            };
            var dialog = DialogService.Show <ConfirmDialog>("Confirm Delete", parameters);
            var result = await dialog.Result;

            if (!result.Cancelled)
            {
                NavigationManager.NavigateTo("/periods");
            }
        }
コード例 #20
0
 private async void Save()
 {
     if (!PeriodContext.Validate())
     {
         return;
     }
     if (IsEdit)
     {
         if (await PeriodService.Update(Period.Id, Model))
         {
             Dialog.Close(DialogResult.Ok(true));
         }
     }
     else
     {
         if (await PeriodService.Create(Model))
         {
             Dialog.Close(DialogResult.Ok(true));
         }
     }
 }
コード例 #21
0
 protected int CreateDatabase(string path)
 {
     try
     {
         TrackItem itemCreated;
         Period    periodCreated;
         using (var items = new TrackItemService())
         {
             itemCreated = items.Create(new TrackItem
             {
                 Item = "SMPL-001",
                 Time = 0.5f,
                 Date = DateTime.Now
             });
         }
         using (var periods = new PeriodService())
         {
             periodCreated = periods.Create(new Period
             {
                 Name      = "Sample Period",
                 EzName    = "sample",
                 StartDate = DateTime.Now,
                 EndDate   = DateTime.Now.AddDays(1),
                 Items     = new TrackItem[] { itemCreated }
             });
         }
         Console.WriteLine($"Succesfully Created Item and Period Databases \"{Path.Combine(path, "trackmat.db")}\"");
         Console.WriteLine(itemCreated);
         Console.WriteLine(periodCreated);
         Console.ResetColor();
     }
     catch (Exception e)
     {
         Console.ForegroundColor = ConsoleColor.Red;
         Console.WriteLine($"Failed to create config database at {path}. {e.Message}");
         return((int)ExitCodes.FailedInitAtDatabase);
     }
     return((int)ExitCodes.Success);
 }
コード例 #22
0
        public IActionResult Approve(int id, [FromQuery] int dayId)
        {
            // TODO: maybe return some boolean result
            ServiceResult result = PeriodService.ApprovePeriod(id);

            if (result.Result == Result.NotFound)
            {
                return(NotFound());
            }

            if (result.Result != Result.OK)
            {
                return(BadRequest());
            }

            bool dayApproved = SchoolDayService.IsDayApproved(dayId);

            return(Ok(new
            {
                periodApproved = true,
                dayApproved,
            }));
        }
コード例 #23
0
 public ImportController(IErrorService errorService, PeriodService periodService) : base(errorService)
 {
     _periodService = periodService;
 }
コード例 #24
0
        private async Task GetData()
        {
            PeriodData = await PeriodService.Get(Id);

            StateHasChanged();
        }
コード例 #25
0
ファイル: PeriodRunner.cs プロジェクト: AngelMunoz/Trackmat
        public int Update(UpdatePeriodArgs args)
        {
            using (var periods = new PeriodService())
            {
                Period found;
                var    toUpdate = new Period();
                try
                {
                    found = periods.FindOne(args.EzName);
                    if (found == null)
                    {
                        throw new ArgumentNullException("Period Not Found");
                    }
                    Console.ForegroundColor = ConsoleColor.Yellow;
                    Console.WriteLine($"Updating Found Period\n{found}");
                    Console.ResetColor();
                }
                catch (ArgumentNullException)
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine($"Period with Easy Name [{args.EzName}] could not be found.");
                    Console.ResetColor();
                    return((int)ExitCodes.FailedToUpdate);
                }
                catch (Exception e)
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine($"Failed to Update Period with Easy Name [{args.EzName}], {e.Message}");
                    Console.ResetColor();
                    return((int)ExitCodes.FailedToUpdate);
                }

                if (args.StartDate != DateTime.MinValue)
                {
                    found.StartDate = args.StartDate;
                }

                if (args.EndDate != DateTime.MinValue)
                {
                    found.EndDate = args.EndDate;
                }

                if (!string.IsNullOrEmpty(args.Name) && !string.IsNullOrWhiteSpace(args.Name))
                {
                    found.Name = args.Name;
                }

                var updated = periods.UpdateOne(found);
                if (!updated)
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine($"Failed to Update Period with Easy Name [{args.EzName}]");
                    Console.ResetColor();
                    return((int)ExitCodes.FailedToUpdate);
                }
                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine($"Period Updated\n{found}");
                Console.ResetColor();
                return((int)ExitCodes.Success);
            }
        }