Beispiel #1
0
        public async Task <IActionResult> AddVacation(VacationViewModel model)
        {
            if (model.VacationStarted < DateTime.Now)
            {
                ModelState.AddModelError("VacationStarted", "Keçmiş tarixə əlavə etmək olmaz");
            }

            else
            {
                if (ModelState.IsValid)
                {
                    Vacation vacation = new Vacation()
                    {
                        Id              = model.Id,
                        WorkerId        = model.WorkerId,
                        VacationStarted = model.VacationStarted,
                        VacationEnded   = model.VacationEnded
                    };
                    await _dbContext.Vacations.AddAsync(vacation);

                    await _dbContext.SaveChangesAsync();

                    return(RedirectToAction("Index"));
                }
            }
            return(View());
        }
Beispiel #2
0
        public Vacation()
        {
            InitializeComponent();

            _viewModel  = (VacationViewModel)LayoutRoot.DataContext;
            DataContext = _viewModel;
        }
Beispiel #3
0
        public async Task <IActionResult> AddVacationToEmployee([Bind("Id,StartDate,EndDate,UserId,Comment,VacationType")] VacationViewModel model)
        {
            ModelState.Remove(ModelState.Keys.First());
            Vacation vacation = await MapToModel(new Vacation(), model, model.UserId);

            ValidateRequestedDaysAvailability(vacation);

            if (ModelState.IsValid)
            {
                if (await IsAddedVacationConflicting(vacation.StartDate, vacation.EndDate, model.UserId))
                {
                    TempData["StatusMessage"] = "The requested vacation overlaps with a previous one";
                }
                else
                {
                    vacation.Status = RequestStatus.Approved;
                    await DeductUserVacationBalance(new VacationViewModel(vacation));

                    await vacationRepository.Add(vacation);

                    TempData["StatusMessage"] = "New vacation has been created to the selected employee successfully.";
                    return(RedirectToAction(nameof(Manage)));
                }
            }

            ViewBag.users = await applicationUserRepository.GetAllUsers();

            return(View(model));
        }
Beispiel #4
0
        public async Task <IActionResult> Create([Bind("Id,StartDate,EndDate,VacationType,Comment")] VacationViewModel model)
        {
            if (ModelState.IsValid)
            {
                Vacation vacation = await MapToModel(new Vacation(), model, GetLoggedUserId());

                // validate that requested vacation days is within the allowed user vacation days
                ValidateRequestedDaysAvailability(vacation);

                if (ModelState.IsValid)
                {
                    if (await IsNewVacationConflicting(vacation.StartDate, vacation.EndDate))
                    {
                        TempData["StatusMessage"] = "The requested vacation overlaps with a previous one";
                    }
                    else
                    {
                        await DeductUserVacationBalance(new VacationViewModel(vacation));

                        await vacationRepository.Add(vacation);

                        TempData["StatusMessage"] = "New vacation has been created successfully.";
                        return(RedirectToAction(nameof(Index)));
                    }
                }
            }
            return(View(model));
        }
Beispiel #5
0
        public async Task <IActionResult> Edit(string id, string returnUrl, [Bind("Id,StartDate,EndDate,VacationType,Status,Comment")] VacationViewModel model)
        {
            if (id != model.Id)
            {
                return(NotFound());
            }

            Vacation vacation = await vacationRepository.GetByID(id);

            // add back old deducted days from user vacation balance
            await IncrementUserVacationBalance(new VacationViewModel(vacation));
            await MapToModel(vacation, model, vacation.UserID);

            // if the vacation got rejected don't validate
            if (model.Status != RequestStatus.Rejected)
            {
                // validate that requested vacation days is within the allowed user vacation days
                ValidateRequestedDaysAvailability(vacation);
            }
            if (ModelState.IsValid)
            {
                if (await IsExistingVacationConflicting(vacation.StartDate, vacation.EndDate, vacation.ID))
                {
                    TempData["StatusMessage"] = "The requested vacation overlaps with a previous one";
                }
                else
                {
                    // only update status if it's the admin
                    if (IsAdmin())
                    {
                        vacation.Status = model.Status;
                        switch (model.Status)
                        {
                        case RequestStatus.Approved:
                            await UpdateOffenses(vacation);

                            break;

                        case RequestStatus.Rejected:
                            await workingDayRepository.CheckAbsencesInRange(vacation.UserID, vacation.StartDate, DateTime.Today.AddDays(-1));

                            break;
                        }
                    }
                    // valid requested days & personal & pending or approved ? deduct requested days from vacation balance
                    await DeductUserVacationBalance(new VacationViewModel(vacation));

                    await vacationRepository.Update(vacation);

                    TempData["StatusMessage"] = "Vacation has been updated successfully.";
                    if (Url.IsLocalUrl(returnUrl))
                    {
                        return(Redirect(returnUrl));
                    }
                    return(RedirectToAction(nameof(Index)));
                }
            }
            return((vacation.EndDate - vacation.StartDate).TotalDays != 0.5 ? View(model) : View("EditHalfDay", model));
        }
Beispiel #6
0
        public vacation()
        {
            InitializeComponent();

            var vacationProvider = App.Kernel.Get <IVacationProvider>();

            BindingContext = new VacationViewModel(vacationProvider);
        }
Beispiel #7
0
 public IActionResult EnterVacation(VacationViewModel model)
 {
     if (ModelState.IsValid)
     {
         ViewBag.Success = 1;
     }
     return(View(model));
 }
Beispiel #8
0
        private async Task IncrementUserVacationBalance(VacationViewModel old)
        {
            if (old.Status != RequestStatus.Rejected && old.VacationType == VacationType.Personal)
            {
                ApplicationUser user = await applicationUserRepository.GetByID(old.UserId);

                user.VacationBalance += old.TotalDays;
            }
        }
Beispiel #9
0
        private async Task DeductUserVacationBalance(VacationViewModel updated)
        {
            if (updated.Status != RequestStatus.Rejected && updated.VacationType == VacationType.Personal)
            {
                ApplicationUser user = await applicationUserRepository.GetByID(updated.UserId);

                user.VacationBalance -= updated.TotalDays;
            }
        }
Beispiel #10
0
 public VacationAddContentDialog(AuthenticationViewModel authVM, VacationViewModel vacVM)
 {
     _vacVM    = vacVM;
     _authVM   = authVM;
     Success   = false;
     Locations = new ObservableCollection <VacationLocation>();
     this.InitializeComponent();
     AddLocationForm.Visibility   = Visibility.Collapsed;
     BtnDeleteLocation.Visibility = Visibility.Collapsed;
 }
Beispiel #11
0
        public async Task <IActionResult> AddVacationToAllEmployees(VacationViewModel model)
        {
            if (ModelState.IsValid)
            {
                await vacationRepository.AddVacationToAllEmployees(model, await applicationUserRepository.GetAllUsers());

                TempData["StatusMessage"] = "New general vacation has been created to all employees successfully.";
                return(RedirectToAction(nameof(Manage)));
            }
            return(View(model));
        }
        public IActionResult Create(VacationViewModel vacation)
        {
            var newVacation = new Vacation()
            {
                StartDate = vacation.StartDate,
                EndDate   = vacation.EndDate,
            };

            _repo.Add(newVacation);

            return(RedirectToAction(nameof(List)));
        }
 public async Task <IActionResult> CancelVacation(VacationViewModel viewmodel)
 {
     try
     {
         await Mediator.Send(new CancelVacationCommand { Id = viewmodel.Id });
     }
     catch (Exception ex)
     {
         ModelState.AddModelError("Error", ex.Message);
     }
     return(RedirectToAction(nameof(Person)));
 }
 public async Task <IActionResult> RequestVacation(VacationViewModel viewmodel)
 {
     try
     {
         await Mediator.Send(new RequestVacationCommand { EmployeeId = viewmodel.EmployeeId, Start = viewmodel.StartDate, End = viewmodel.EndDate, VacationTypeId = viewmodel.VacationTypeId });
     }
     catch (Exception ex)
     {
         ModelState.AddModelError("Error", ex.Message);
     }
     return(RedirectToAction(nameof(Person)));
 }
Beispiel #15
0
        public async Task <ActionResult> TakeVacation(VacationViewModel vacation)
        {
            var vacDto = Mapper.Map <VacationViewModel, VacationDTO>(vacation);

            if (ModelState.IsValid)
            {
                var message = await _vacationService.TakeVacation(vacDto, User.Identity.GetUserIdGuid());

                return(Content(message));
            }
            return(Content("Error"));
        }
        public IActionResult Add(VacationViewModel viewModel)
        {
            var employee = _dbContext.Set <AppIdentityUser>()
                           .Include(u => u.Employee)
                           .FirstOrDefault(u => u.Id == User.FindFirstValue(ClaimTypes.NameIdentifier)).Employee;
            var employeeCalendar = _dbContext.Set <EmployeeCalendar>()
                                   .FirstOrDefault(u => u.Employee == employee);

            var days = DomainLogic.GetDatesFromInterval(
                viewModel.From ?? throw new NullReferenceException(),
                viewModel.To ?? throw new NullReferenceException());

            var hollidays = _dbContext.Set <Holiday>().Where(u =>
                                                             u.Date >= viewModel.From && u.Date <= viewModel.To).ToList();

            var events = _dbContext.Set <AbstractCalendarEntry>()
                         .FirstOrDefault(s =>
                                         s.CalendarEmployeeId == employeeCalendar.Id &&
                                         s.To >= viewModel.From && s.From <= viewModel.To);

            if (events != null)
            {
                ModelState.AddModelError("Error", "Выбранная вами дата пересекается с уже имеющимися в календаре событиями");
                return(View(viewModel));
            }

            var vacationDays = DomainLogic.GetWorkDay(days, hollidays);

            if (viewModel.IsPaid)
            {
                if (employeeCalendar.TotalDayOfVacation < vacationDays)
                {
                    ModelState.AddModelError("Error2", "Количество запрашеваемых дней отпуска превышает количество доступных вам");
                    return(View(viewModel));
                }
                else
                {
                    employeeCalendar.TotalDayOfVacation -= vacationDays;
                    _dbContext.SaveChanges();
                }
            }

            var vacation = new Vacation(
                viewModel.From ?? throw new NullReferenceException(),
                viewModel.To ?? throw new NullReferenceException(),
                employeeCalendar,
                viewModel.IsPaid);

            _dbContext.Set <AbstractCalendarEntry>().Add(vacation);
            _dbContext.SaveChanges();
            return(RedirectToAction("Index", "Calendar"));
        }
Beispiel #17
0
        public async Task <IActionResult> AddVacation(string id)
        {
            if (id == null)
            {
                return(NotFound());
            }
            var worker = await _userManager.FindByIdAsync(id);

            VacationViewModel vacationView = new VacationViewModel();

            vacationView.WorkerId      = worker.Id;
            vacationView.WorkerAccount = worker.Account;
            return(View(vacationView));
        }
Beispiel #18
0
 public async Task AddVacationToAllEmployees(VacationViewModel model, List <ApplicationUser> users)
 {
     foreach (ApplicationUser user in users)
     {
         context.Vacations.Add(new Vacation
         {
             StartDate    = model.StartDate,
             EndDate      = model.EndDate,
             Comment      = model.Comment,
             Status       = RequestStatus.Approved,
             VacationType = VacationType.General,
             UserID       = user.Id
         });
     }
     await context.SaveChangesAsync();
 }
Beispiel #19
0
        public async Task <IActionResult> Edit(string id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            Vacation vacation = await vacationRepository.GetByID(id);

            if (vacation == null)
            {
                return(NotFound());
            }

            VacationViewModel model = new VacationViewModel(vacation);

            return(model.TotalDays != 0.5 ? View(model) : View("EditHalfDay", model));
        }
Beispiel #20
0
        private async Task <Vacation> MapToModel(Vacation vacation, VacationViewModel model, string userId)
        {
            ApplicationUser user = await applicationUserRepository.GetByID(userId);

            vacation.User   = user;
            vacation.UserID = userId;
            if (new VacationViewModel(vacation).TotalDays == 0.5)
            {
                vacation.EndDate = model.StartDate.AddHours(12);
                ModelState.Remove(ModelState.Keys.First());
            }
            else
            {
                vacation.EndDate = model.EndDate;
            }
            vacation.StartDate    = model.StartDate;
            vacation.Comment      = model.Comment;
            vacation.VacationType = model.VacationType;
            return(vacation);
        }
Beispiel #21
0
        public async Task <IActionResult> AddVacation(string id, VacationViewModel vacationView)
        {
            var worker = await _userManager.FindByIdAsync(id);

            if (!ModelState.IsValid)
            {
                vacationView.WorkerAccount = worker.Account;
                vacationView.WorkerId      = worker.Id;
                return(View(vacationView));
            }

            Vacation vacation = new Vacation();

            vacation.WorkerId  = worker.Id;
            vacation.StartDate = vacationView.StartDate;
            vacation.EndDate   = vacationView.EndDate;

            await _dbContext.Vacations.AddAsync(vacation);

            await _dbContext.SaveChangesAsync();

            return(RedirectToAction("WorkerList", "Worker"));
        }
Beispiel #22
0
 public LoginViewController()
 {
     _userViewModel       = AppDelegate.UserViewModel;
     _vacationViewModel   = AppDelegate.VacationViewModel;
     _localizationService = AppDelegate.LocalizationService;
 }
Beispiel #23
0
 public void CreateVacation(VacationViewModel model, string userId)
 {
     throw new NotImplementedException();
 }
        //we have to put an update funciton here

        //put a delete function here
        public IHttpActionResult Delete()
        {
            VacationViewModel model = null;

            return(Ok(model));
        }
Beispiel #25
0
 public void UpdateVacation(VacationViewModel model)
 {
     throw new NotImplementedException();
 }
Beispiel #26
0
 public VacationPage()
 {
     this.InitializeComponent();
     _vacationVM = new VacationViewModel();
 }
Beispiel #27
0
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            var localizationService = ((AndroidApp)Application).LocalizationService;

            _vacationViewModel = ((AndroidApp)Application).VacationViewModel;
            _vacationViewModel.PropertyChanged += ViewModelOnPropertyChanged;

            SetContentView(Resource.Layout.Main);

            var toolbar = FindViewById <Toolbar>(Resource.Id.toolbar);

            SetSupportActionBar(toolbar);
            SupportActionBar.SetDisplayHomeAsUpEnabled(true);
            SupportActionBar.SetHomeButtonEnabled(true);
            SupportActionBar.SetDisplayShowTitleEnabled(true);
            drawerLayout   = FindViewById <DrawerLayout>(Resource.Id.drawer_layout);
            navigationView = FindViewById <NavigationView>(Resource.Id.nav_view);

            _listView = FindViewById <ListView>(Resource.Id.listVac);

            var floatingActionButton = FindViewById <FloatingActionButton>(Resource.Id.addVacButton);

            floatingActionButton.Click += (sender, e) =>
            {
                var intent = new Intent(this, typeof(DetailsActivity));
                StartActivity(intent);
            };


            var            listFilter = FindViewById <ListView>(Resource.Id.listFilter);
            IList <string> filters    = new List <string>
            {
                "ALL",
                "OPEN",
                "CLOSED"
            };

            listFilter.Adapter = new ArrayAdapter <string>(this, Android.Resource.Layout.SimpleListItem1, filters);

            var filter = Intent.GetStringExtra("Filter");

            if (filter == "ALL")
            {
                _listView.Adapter = new VTSListAdapter(this, _vacationViewModel.Vacation.ToList());
            }
            if (filter == "OPEN")
            {
                _listView.Adapter = new VTSListAdapter(this,
                                                       _vacationViewModel.Vacation.Where(vac => vac.VacationStatusId == 3).ToList());
            }
            if (filter == "CLOSED")
            {
                _listView.Adapter = new VTSListAdapter(this,
                                                       _vacationViewModel.Vacation.Where(vac => vac.VacationStatusId == 5).ToList());
            }

            _listView.ItemClick += (sender, e) =>
            {
                var intent = new Intent(this, typeof(DetailsActivity));
                intent.PutExtra("Vacation", _vacationViewModel.Vacation[e.Position].Id.ToString());
                StartActivity(intent);
            };

            listFilter.ItemClick += (sender, e) =>
            {
                var intent = new Intent(this, typeof(MainActivity));
                intent.PutExtra("Filter", filters[e.Position]);
                StartActivity(intent);
            };

            var drawerToggle = new SupportActionBarDrawerToggle(this, drawerLayout, toolbar,
                                                                Resource.String.open_drawer, Resource.String.close_drawer);

            drawerLayout.SetDrawerListener(drawerToggle);
            drawerToggle.SyncState();
            _vacationViewModel.PropertyChanged -= ViewModelOnPropertyChanged;
        }
Beispiel #28
0
 public DetailViewController()
 {
     _vacationViewModel   = AppDelegate.VacationViewModel;
     _localizationService = AppDelegate.LocalizationService;
 }
Beispiel #29
0
 public VacationsViewController(int filter)
 {
     _filter             = filter;
     _vacationsViewModel = AppDelegate.VacationViewModel;
 }
Beispiel #30
0
        private static bool ChooseActive(VacationViewModel vacationViewModel, ConnectedStateService connectedStateService, ILocalizationService localizationService)
        {
            var activity = Console.ReadLine();

            switch (activity)
            {
            case "1":
                foreach (var vac in vacationViewModel.Vacation)
                {
                    Console.WriteLine(JsonConvert.SerializeObject(vac));
                }
                return(false);

            case "2":
                Console.WriteLine(localizationService.Localize("GetVacation"));
                for (var i = 0; i < vacationViewModel.Vacation.Count; i++)
                {
                    Console.WriteLine(i + 1 + " - " + vacationViewModel.Vacation[i].Id);
                }
                Console.WriteLine(localizationService.Localize("CanselOperation"));
                var getVac = Console.ReadLine();
                if (getVac != "0")
                {
                    Console.WriteLine(
                        JsonConvert.SerializeObject(
                            vacationViewModel.FindVacation(
                                vacationViewModel.Vacation[int.Parse(getVac) - 1].Id.ToString())));
                }
                return(false);

            case "3":
                Vacation vacation = new Vacation();

                Console.WriteLine(localizationService.Localize("StartDate"));
                vacation.Start = DateTime.Parse(Console.ReadLine());

                Console.WriteLine(localizationService.Localize("EndDate"));
                vacation.End = DateTime.Parse(Console.ReadLine());

                Console.WriteLine(localizationService.Localize("VacationType"));
                var typeNewVac = Console.ReadLine();
                switch (typeNewVac)
                {
                case "1":
                    vacation.VacationTypeId = 1;
                    break;

                case "2":
                    vacation.VacationTypeId = 2;
                    break;

                case "3":
                    vacation.VacationTypeId = 3;
                    break;

                case "4":
                    vacation.VacationTypeId = 4;
                    break;

                case "5":
                    vacation.VacationTypeId = 5;
                    break;

                case "6":
                    vacation.VacationTypeId = 6;
                    break;
                }
                Console.WriteLine(localizationService.Localize("VacationStatus"));
                var statusNewVac = Console.ReadLine();
                switch (statusNewVac)
                {
                case "1":
                    vacation.VacationStatusId = 1;
                    break;

                case "2":
                    vacation.VacationStatusId = 2;
                    break;

                case "3":
                    vacation.VacationStatusId = 3;
                    break;

                case "4":
                    vacation.VacationStatusId = 4;
                    break;

                case "5":
                    vacation.VacationStatusId = 5;
                    break;
                }
                Console.WriteLine(localizationService.Localize("CreatedBy"));
                vacation.CreatedBy = Console.ReadLine();
                vacation.Created   = DateTime.Now;
                Console.WriteLine(
                    JsonConvert.SerializeObject(
                        vacationViewModel.AddVacation(vacation).Result));
                return(false);

            case "4":
                Console.WriteLine(localizationService.Localize("DeleteVacation"));
                for (var i = 0; i < vacationViewModel.Vacation.Count; i++)
                {
                    Console.WriteLine(i + 1 + " - " + vacationViewModel.Vacation[i].Id);
                }
                Console.WriteLine(localizationService.Localize("CanselOperation"));
                var detetedVac = Console.ReadLine();
                if (detetedVac != "0")
                {
                    Console.WriteLine(
                        JsonConvert.SerializeObject(
                            vacationViewModel.DeleteVacation(
                                vacationViewModel.Vacation[int.Parse(detetedVac) - 1]).Result));
                }
                return(false);

            case "5":
                Console.WriteLine(localizationService.Localize("UpdateVacation"));
                for (var i = 0; i < vacationViewModel.Vacation.Count; i++)
                {
                    Console.WriteLine(i + 1 + " - " + vacationViewModel.Vacation[i].Id);
                }
                Console.WriteLine(localizationService.Localize("CanselOperation"));
                var updateVac = Console.ReadLine();
                if (updateVac != "0")
                {
                    Console.WriteLine(
                        localizationService.Localize("WhatChange"));
                    var change = Console.ReadLine();
                    switch (change)
                    {
                    case "1":
                        Console.WriteLine(localizationService.Localize("StartDate"));
                        vacationViewModel.Vacation[int.Parse(updateVac) - 1].Start = DateTime.Parse(Console.ReadLine());
                        break;

                    case "2":
                        Console.WriteLine(localizationService.Localize("EndDate"));
                        vacationViewModel.Vacation[int.Parse(updateVac) - 1].End = DateTime.Parse(Console.ReadLine());
                        break;

                    case "3":
                        Console.WriteLine(localizationService.Localize("VacationType"));
                        var typeVac = Console.ReadLine();
                        switch (typeVac)
                        {
                        case "1":
                            vacationViewModel.Vacation[int.Parse(updateVac) - 1].VacationTypeId = 1;
                            break;

                        case "2":
                            vacationViewModel.Vacation[int.Parse(updateVac) - 1].VacationStatusId = 2;
                            break;

                        case "3":
                            vacationViewModel.Vacation[int.Parse(updateVac) - 1].VacationTypeId = 3;
                            break;

                        case "4":
                            vacationViewModel.Vacation[int.Parse(updateVac) - 1].VacationStatusId = 4;
                            break;

                        case "5":
                            vacationViewModel.Vacation[int.Parse(updateVac) - 1].VacationTypeId = 5;
                            break;

                        case "6":
                            vacationViewModel.Vacation[int.Parse(updateVac) - 1].VacationStatusId = 6;
                            break;
                        }
                        break;

                    case "4":
                        Console.WriteLine(localizationService.Localize("VacationStatus"));
                        var statusVac = Console.ReadLine();
                        switch (statusVac)
                        {
                        case "1":
                            vacationViewModel.Vacation[int.Parse(updateVac) - 1].VacationStatusId = 1;
                            break;

                        case "2":
                            vacationViewModel.Vacation[int.Parse(updateVac) - 1].VacationStatusId = 2;
                            break;

                        case "3":
                            vacationViewModel.Vacation[int.Parse(updateVac) - 1].VacationStatusId = 3;
                            break;

                        case "4":
                            vacationViewModel.Vacation[int.Parse(updateVac) - 1].VacationStatusId = 4;
                            break;

                        case "5":
                            vacationViewModel.Vacation[int.Parse(updateVac) - 1].VacationStatusId = 5;
                            break;
                        }
                        break;

                    case "5":
                        Console.WriteLine(localizationService.Localize("CreatedBy"));
                        vacationViewModel.Vacation[int.Parse(updateVac) - 1].CreatedBy = Console.ReadLine();
                        break;
                    }

                    vacationViewModel.Vacation[int.Parse(updateVac) - 1].Created = DateTime.Now;

                    Console.WriteLine(
                        JsonConvert.SerializeObject(
                            vacationViewModel.UpdateVacation(
                                vacationViewModel.Vacation[int.Parse(updateVac) - 1]).Result));
                }
                return(false);

            case "6":
                if (connectedStateService.ForceDisconnectedState)
                {
                    Console.WriteLine(localizationService.Localize("WantConnectToInternet"));
                    var connectionToInterne = Console.ReadLine();
                    switch (connectionToInterne)
                    {
                    case "1":
                        connectedStateService.ForceDisconnectedState = false;
                        break;

                    case "2":
                        connectedStateService.ForceDisconnectedState = true;
                        break;
                    }
                    ;
                }
                else
                {
                    Console.WriteLine(localizationService.Localize("WantDisconnectToInternet"));
                    var connectionToInterne = Console.ReadLine();
                    switch (connectionToInterne)
                    {
                    case "1":
                        connectedStateService.ForceDisconnectedState = true;
                        break;

                    case "2":
                        connectedStateService.ForceDisconnectedState = false;
                        break;
                    }
                    ;
                }
                break;

            case "7":
                return(true);
            }
            return(false);
        }