Exemple #1
0
        public ActionResult Create(CreateLeaveRequestVM model)
        {
            try
            {
                var leaveTypes      = _leaveTypeRepo.FindAll();
                var leaveTypesItems = leaveTypes.Select(q => new SelectListItem
                {
                    Text  = q.Name,
                    Value = q.Id.ToString()
                });
                model.LeaveTypes = leaveTypesItems;
                if (!ModelState.IsValid)
                {
                    return(View(model));
                }

                if (DateTime.Compare(model.StartDate, model.EndDate) > 1)
                {
                    ModelState.AddModelError("", "Start Date cannot be further in the future than the End Date");
                    return(View(model));
                }

                var employee      = _userManager.GetUserAsync(User).Result; //Obtiene el usuario que ha iniciado sesión actualmente
                var allocation    = _leaveAllocRepo.GetLeaveAllocationsByEmployeeAndType(employee.Id, model.LeaveTypeId);
                int daysRequested = (int)(model.EndDate.Date - model.StartDate.Date).TotalDays;

                if (daysRequested > allocation.NumberOfDays)
                {
                    ModelState.AddModelError("", "You Do Not have Sufficient Days For This Request");
                    return(View(model));
                }

                var leaveRequestModel = new LeaveRequestVM
                {
                    RequestingEmployeeId = employee.Id,
                    StartDate            = model.StartDate,
                    EndDate       = model.EndDate,
                    Approved      = null,
                    DateRequested = DateTime.Now,
                    DateActioned  = DateTime.Now,
                    LeaveTypeId   = model.LeaveTypeId
                };

                var leaveRequest = _mapper.Map <LeaveRequest>(leaveRequestModel);
                var isSuccess    = _leaveRequestRepo.Create(leaveRequest);

                if (!isSuccess)
                {
                    ModelState.AddModelError("", "Something Went Wrong With Submiting Your Record");
                    return(View(model));
                }

                return(RedirectToAction(nameof(Index), "Home"));
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", "Something Went Wrong");
                return(View(model));
            }
        }
Exemple #2
0
        public async Task <ActionResult> Create(CreateLeaveRequestVM model)
        {
            try
            {
                var startDate  = Convert.ToDateTime(model.StartDate);
                var endDate    = Convert.ToDateTime(model.EndDate);
                var leaveTypes = await _leaveTypeRepo.FindAll();

                var leaveTypeItems = leaveTypes.Select(q => new SelectListItem
                {
                    Text  = q.Name,
                    Value = q.Id.ToString()
                });
                model.LeaveTypes = leaveTypeItems;
                if (!ModelState.IsValid)
                {
                    return(View(model));
                }
                if (DateTime.Compare(startDate, endDate) > 1)
                {
                    ModelState.AddModelError("", "Start date is later than end date.");
                    return(View(model));
                }
                var employee = await _userManager.GetUserAsync(User);

                var allocation = await _leaveAllocRepo.GetLeaveAllocationsByEmployeeAndType(employee.Id, model.LeaveTypeId);

                int daysRequested = (int)(endDate.Date - startDate.Date).TotalDays;
                if (daysRequested > allocation.NumberOfDays)
                {
                    ModelState.AddModelError("", "You don't have enough of these leave-type days!");
                    return(View(model));
                }
                var leaveRequestModel = new LeaveRequestVM
                {
                    RequestingEmployeeId = employee.Id,
                    StartDate            = startDate,
                    EndDate         = endDate,
                    Approved        = null,
                    DateRequested   = DateTime.Now,
                    DateActioned    = DateTime.Now,
                    LeaveTypeId     = model.LeaveTypeId,
                    RequestComments = model.RequestComments
                };
                var leaveRequest = _mapper.Map <LeaveRequest>(leaveRequestModel);
                var isSuccess    = await _leaveRequestRepo.Create(leaveRequest);

                if (!isSuccess)
                {
                    ModelState.AddModelError("", "Something went wrong submitting your request.");
                    return(View(model));
                }
                return(RedirectToAction("MyLeave"));
            }
            catch (Exception)
            {
                ModelState.AddModelError("", "Something went wrong.");
                return(View(model));
            }
        }
        public ActionResult Create(CreateLeaveRequestVM model)
        {
            var leaveTypes     = _leaveTypeRepo.FindAll();
            var leaveTypeItems = leaveTypes.Select(q => new SelectListItem
            {
                Text  = q.Name,
                Value = q.Id.ToString()
            });

            try
            {
                // TODO: Add insert logic here
                if (!ModelState.IsValid)
                {
                    return(View(model));
                }

                if (DateTime.Compare(model.StartDate, model.EndDate) > 1)
                {
                    ModelState.AddModelError("", "Start Date Cannot Be Further In The Future Than The End Date");
                    return(View(model));
                }

                var employee      = _userManager.GetUserAsync(User).Result;
                var allocation    = _leaveAlloRepo.GetLeaveAllocationsByEmployeeAndType(employee.Id, model.LeaveTypeId);
                int daysRequested = (int)(model.EndDate.Date - model.StartDate.Date).TotalDays;

                if (daysRequested > allocation.NumberOfDays)
                {
                    ModelState.AddModelError("", "You Don't Have Enough Days Left");
                    return(RedirectToAction(nameof(Index), "Home"));
                }

                var leaveRequestModel = new LeaveRequestVM
                {
                    RequestingEmployeeId = employee.Id,
                    StartDate            = model.StartDate,
                    EndDate       = model.EndDate,
                    Approved      = null,
                    DateRequested = DateTime.Now,
                    DateActioned  = DateTime.Now,
                    LeaveTypeId   = model.LeaveTypeId,
                };
                var leaveRequest = _mapper.Map <LeaveRequest>(leaveRequestModel);
                var isSuccess    = _leaveRequestRepo.Create(leaveRequest);

                if (!isSuccess)
                {
                    ModelState.AddModelError(string.Empty, "Errr, Something Went Wrong....");
                    return(RedirectToAction(nameof(Index), "Home"));
                }

                return(RedirectToAction(nameof(Index), "Home"));
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
                return(View(model));
            }
        }
Exemple #4
0
        public ActionResult Create(CreateLeaveRequestVM model)
        {
            try
            {
                var startDate  = Convert.ToDateTime(model.StartDate);
                var endDate    = Convert.ToDateTime(model.EndDate);
                var leaveTypes = _leaveTypeRepository.FindAll();
                var leaveItems = leaveTypes.Select(q => new SelectListItem
                {
                    Text  = q.Name,
                    Value = q.Id.ToString()
                });
                model.LeaveTypes = leaveItems;
                if (!ModelState.IsValid)
                {
                    return(View(model));
                }
                if (DateTime.Compare(startDate, endDate) > 0)
                {
                    ModelState.AddModelError("", "Start date cannot be farther in the future than end date");
                    return(View(model));
                }
                var employee      = _userManager.GetUserAsync(User).Result;
                var allocation    = _leaveAllocationRepository.GetLeaveAllocationsByEmployeeAndType(employee.Id, model.LeaveTypeId);
                int daysRequested = (int)(endDate - startDate).TotalDays;

                if (daysRequested > allocation.NumberOfDays)
                {
                    ModelState.AddModelError("", "You do not have sufficient days for this request");
                    return(View(model));
                }

                var leaveRequestModel = new LeaveRequestVM
                {
                    RequestingEmployeeId = employee.Id,
                    StartDate            = startDate,
                    EndDate         = endDate,
                    Approved        = null,
                    DateRequested   = DateTime.Now,
                    DateActioned    = DateTime.Now,
                    LeaveTypeId     = model.LeaveTypeId,
                    RequestComments = model.RequestComments
                };
                var leaveRequest = _mapper.Map <LeaveRequest>(leaveRequestModel);
                var isSuccess    = _leaveRequestRepository.Create(leaveRequest);

                if (!isSuccess)
                {
                    ModelState.AddModelError("", "Something went wrong while creating the leaverequest");
                    return(View(model));
                }

                return(RedirectToAction("MyLeave"));
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", "Something went wrong");
                return(View(model));
            }
        }
Exemple #5
0
        public ActionResult Create(CreateLeaveRequestVM model)
        {
            try
            {
                var leaveTypes     = _leaveTypeRepo.FindAll();
                var leaveTypeItems = leaveTypes.Select(q => new SelectListItem
                {
                    Text  = q.Name,
                    Value = q.Id.ToString()
                });
                model.LeaveTypes = leaveTypeItems;

                if (!ModelState.IsValid)
                {
                    return(View(model));
                }

                if (DateTime.Compare(model.StartDate, model.EndDate) > 1)
                {
                    ModelState.AddModelError("", "Start Date cannot be after the end date, pls review!!");
                    return(View(model));
                }
                var employee      = _userManager.GetUserAsync(User).Result;
                var allocation    = _leaveAllocRepo.GetLeaveAllocationByEmployeeAndType(employee.Id, model.LeaveTypeId);
                int daysRequested = (int)(model.EndDate.Date - model.StartDate.Date).TotalDays;

                if (daysRequested > allocation.NumberOfDays)
                {
                    ModelState.AddModelError("", "You Do Not Have Sufficient Days For  This Request");
                    return(View(model));
                }

                var leaveRequestModel = new LeaveRequestVM
                {
                    RequestingEmployeeId = employee.Id,
                    StartDate            = model.StartDate,
                    EndDate         = model.EndDate,
                    Approved        = null,
                    DateRequested   = DateTime.Now,
                    DateActioned    = DateTime.Now,
                    LeaveTypeId     = model.LeaveTypeId,
                    RequestComments = model.RequestComments
                };

                var leaveRequest = _mapper.Map <LeaveRequest>(leaveRequestModel);
                var isSuccess    = _leaveRequestRepo.Create(leaveRequest);

                if (!isSuccess)
                {
                    ModelState.AddModelError("", "Something went wrong with submitting your Request");
                    return(View(model));
                }
                return(RedirectToAction("EmployeeLeaveRequests"));
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", "Something Went Wrong");
                return(View(model));
            }
        }
Exemple #6
0
        // GET: LeaveRequestController/Create
        public async Task <ActionResult> Create()
        {
            var employee = await _userManager.GetUserAsync(User);

            var leaveAllocationsIds = (await _leaveAllocationRepo.FindAll())
                                      .Where(q => q.EmployeeId == employee.Id.ToString())
                                      .Select(q => q.LeaveTypeId);

            var leaveTypes = (await _leaveTypeRepo.FindAll())
                             .Where(q => leaveAllocationsIds.Contains(q.Id));



            var leaveTypeItems = leaveTypes.Select(q => new SelectListItem
            {
                Text  = q.Name,
                Value = q.Id.ToString()
            });

            var model = new CreateLeaveRequestVM
            {
                LeaveTypes = leaveTypeItems
            };

            return(View(model));
        }
        public ActionResult Create(CreateLeaveRequestVM model)
        {
            try
            {
                var leaveTypes = _leaveTypeRepo.FindAll().Select(q => new SelectListItem {
                    Value = q.Id.ToString(), Text = q.Name
                });
                model.LeaveTypes = leaveTypes;

                if (!ModelState.IsValid)
                {
                    return(View(model));
                }

                if (DateTime.Compare(model.StartDate, model.EndDate) > 0)
                {
                    ModelState.AddModelError("", "Error");
                    return(View(model));
                }

                var employee      = _userManager.GetUserAsync(User).Result;
                var allocations   = _allocationRepo.GetLeaveAllocationsByEmployeeAndType(employee.Id, model.LeaveTypeId);
                int daysRequested = (int)(model.EndDate.Date - model.StartDate.Date).TotalDays;
                if (daysRequested > allocations.NumberOfDays)
                {
                    ModelState.AddModelError("", "Error to mach days");
                    return(View(model));
                }

                var leaveRequestModel = new LeaveRequestVM
                {
                    RequestingEmployeeId = employee.Id,
                    StartDate            = model.StartDate,
                    EndDate       = model.EndDate,
                    Approved      = null,
                    DateRequested = DateTime.Now,
                    DateActioned  = DateTime.Now,
                    LeaveTypeId   = model.LeaveTypeId
                };

                var leaveRequest = _mapper.Map <LeaveRequest>(leaveRequestModel);
                var isSuccess    = _requestRepo.Create(leaveRequest);
                if (!isSuccess)
                {
                    ModelState.AddModelError("", "Error create");
                    return(View(model));
                }

                return(RedirectToAction(nameof(Index)));
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", "Error");
                return(View(model));
            }
        }
Exemple #8
0
        public async Task <IActionResult> Create(CreateLeaveRequestVM leaveRequest)
        {
            var currentEmployee = await _UnitOfWork.Employees.GetEmployeeAsync(User);

            if (currentEmployee == null)
            {
                ModelState.AddModelError("", _ControllerLocalizer["Your account not belongs to employees"]);
                return(Forbid());
            }
            if (!ModelState.IsValid)
            {
                return(View(leaveRequest));
            }
            leaveRequest.LeaveTypes = _Mapper.Map <IEnumerable <SelectListItem> >(await _UnitOfWork.LeaveTypes.WhereAsync(c => c.CompanyId == currentEmployee.CompanyId));

            if (DateTime.Compare(leaveRequest.StartDate, leaveRequest.EndDate) > 1)
            {
                ModelState.AddModelError("Date", _ControllerLocalizer["Start date must be earlier that the end date"]);
                return(View(leaveRequest));
            }


            if (!await ValidateRequestDaysAsync(currentEmployee.Id, (int)leaveRequest.LeaveTypeId, leaveRequest.StartDate, leaveRequest.EndDate))
            {
                ModelState.AddModelError("", _ControllerLocalizer["You have requested more days that you owned"]);
                return(View(leaveRequest));
            }
            var request = new LeaveRequest()
            {
                ActionedDateTime     = null,
                Approuved            = null,
                ApprouvedBy          = null,
                ApprouvedById        = null,
                LeaveTypeId          = (int)leaveRequest.LeaveTypeId,
                RequestedDate        = DateTime.Now,
                StartDate            = leaveRequest.StartDate,
                EndDate              = leaveRequest.EndDate,
                RequestingEmployeeId = currentEmployee.Id,
                RequestComment       = leaveRequest.RequestComment,
            };
            bool result = await _UnitOfWork.LeaveRequest.CreateAsync(request);

            result &= await _UnitOfWork.Save();

            if (!result)
            {
                ModelState.AddModelError("", _ControllerLocalizer[
                                             @"Something went wrong when submitting your request. Please wait a moment and retry or contact your system administrator"]);
                return(View(leaveRequest));
            }
            else
            {
                return(RedirectToAction(nameof(EmployeeRequests)));
            }
        }
Exemple #9
0
        // GET: LeaveRequest/Create
        public async Task <ActionResult> Create()
        {
            var leaveTypes = await _leaveTypeRepo.FindAll();

            var leaveTypeItems = leaveTypes.Select(lt => new SelectListItem(lt.Name, lt.Id.ToString()));
            var model          = new CreateLeaveRequestVM
            {
                LeaveTypes = leaveTypeItems
            };

            return(View(model));
        }
        // GET: LeaveRequest/Create
        public ActionResult Create()
        {
            var leaveTypes = _leaveTypeRepo.FindAll().Select(q => new SelectListItem {
                Value = q.Id.ToString(), Text = q.Name
            });
            var model = new CreateLeaveRequestVM
            {
                LeaveTypes = leaveTypes
            };

            return(View(model));
        }
        // GET: LeaveRequestController/Create
        public async Task <IActionResult> Create()
        {
            var leaveTypes = await unitOfWork.LeaveTypes.FindAll();

            var createLeaveRequestVM = new CreateLeaveRequestVM
            {
                LeaveTypes = leaveTypes.Select(l => new SelectListItem()
                {
                    Value = l.Id.ToString(),
                    Text  = l.Name
                })
            };

            return(View(createLeaveRequestVM));
        }
        // GET: LeaveRequest/Create
        public async Task <ActionResult> Create()
        {
            var leavetypes = await _leaveTypeRepo.FindAll();

            var leaveTypeItem = leavetypes.Select(q => new SelectListItem {
                Text  = q.Name,
                Value = q.Id.ToString()
            });
            var model = new CreateLeaveRequestVM
            {
                LeaveTypes = leaveTypeItem,
            };

            return(View(model));
        }
        // GET: LeaveRequest/Create
        public ActionResult Create()
        {
            var leavetypes         = _leavTyperepo.FindAll();
            var leavetypeviewietms = leavetypes.Select(q => new SelectListItem
            {
                Text  = q.Name,
                Value = q.Id.ToString()
            });
            var model = new CreateLeaveRequestVM
            {
                LeaveTypes = leavetypeviewietms
            };

            return(View(model));
        }
Exemple #14
0
        // GET: LeaveRequest/Create
        public ActionResult Create()
        {
            var leaveTypes      = _leaveTypeRepo.FindAll();
            var leaveTypesItems = leaveTypes.Select(q => new SelectListItem
            { //Se crea un objeto select desde el controlador para mostrarlo en el view
                Text  = q.Name,
                Value = q.Id.ToString()
            });
            var model = new CreateLeaveRequestVM
            {
                LeaveTypes = leaveTypesItems
            };

            return(View(model));
        }
        // GET: LeaveRequest/Create
        public async Task <ActionResult> Create()
        {
            var leaveTypes = await _repoleavetype.FindAll();

            var leavetypeitems = leaveTypes.Select(x => new SelectListItem
            {
                Value = x.Id.ToString(),
                Text  = x.Name
            });
            var model = new CreateLeaveRequestVM
            {
                LeaveTypes = leavetypeitems,
            };

            return(View(model));
        }
        // GET: LeaveRequestController/Create
        public async Task <ActionResult> Create()
        {
            var leaveTypes = await _leaveTypeRepo.FindAll();

            var leaveTypeItems = leaveTypes.Select(q => new SelectListItem // To convert it to IEnumerable<SelectListItem> .
            {
                Text  = q.Name,
                Value = q.Id.ToString()
            });
            var model = new CreateLeaveRequestVM
            {
                LeaveTypes = leaveTypeItems
            };

            return(View(model));
        }
Exemple #17
0
        // GET: LeaveRequestController/Create
        public async Task <ActionResult> Create()
        {
            var leaveTypes = await _unitOfWork.LeaveTypes.FindAll();

            var leaveTypeItems = leaveTypes.Select(_ => new SelectListItem {
                Text  = _.Name,
                Value = _.Id.ToString()
            });

            var model = new CreateLeaveRequestVM
            {
                LeaveTypes = leaveTypeItems
            };

            return(View(model));
        }
        // GET: LeaveRequest/Create
        public async Task <ActionResult> Create()
        {
            var leaveTypes = await _leaveTypeRepo.FindAll();

            //convert the leaveTypes list into an IEnumerable SelectListItem to match our CreateLeaveRequestVM
            var leaveTypeItems = leaveTypes.Select(t => new SelectListItem {
                Text  = t.Name,         //what we see rendered
                Value = t.id.ToString() //the actual value (value is string)
            });

            var model = new CreateLeaveRequestVM
            {
                LeaveTypes = leaveTypeItems
            };

            return(View(model));
        }
        // GET: LeaveRequest/Create
        public ActionResult Create()
        {
            //Retrieving leavetype list from the database
            var leaveTypes     = _leaveTypeRepo.FindAll();
            var leaveTypeItems = leaveTypes.Select(q => new SelectListItem
            {
                Text  = q.Name,
                Value = q.Id.ToString()
            });
            //pass the data into the form
            var model = new CreateLeaveRequestVM
            {
                LeaveTypes = leaveTypeItems
            };

            return(View(model));
        }
Exemple #20
0
        // GET: LeaveRequest/Create
        public async Task <ActionResult> Create()
        {
            // This gets the collection of leave types from the DB
            var leaveTypes = await _unitOfWork.LeaveTypes.FindAll();

            // This converts it to a select list b/c our CreateLeaveRequestVM requires this to be
            // an IEnumerable SelectListItem
            var leaveTypeItems = leaveTypes.Select(q => new SelectListItem {
                Text  = q.Name,
                Value = q.Id.ToString()
            });
            var model = new CreateLeaveRequestVM
            {
                LeaveTypes = leaveTypeItems
            };

            return(View(model));
        }
        // GET: LeaveRequest/Create
        public async Task <ActionResult> Create()
        {
            //require selectlistitem of leavetype so we need link here
            var leaveTypes = await _leaveTypeRepo.FindAll();

            //i want this list and represent the data for ech item
            var leaveTypeItems = leaveTypes.Select(q => new SelectListItem
            {
                Text  = q.Name,
                Value = q.Id.ToString()
            });
            var model = new CreateLeaveRequestVM
            {
                LeaveTypes = leaveTypeItems
            };

            return(View(model));
        }
Exemple #22
0
        public async Task <IActionResult> Create()
        {
            var currentEmployee = await _UnitOfWork.Employees.GetEmployeeAsync(User);

            if (currentEmployee == null)
            {
                ModelState.AddModelError("", _ControllerLocalizer["Your account not belongs to employees"]);
                return(Forbid());
            }
            var createLeaveRequestViewModel = new CreateLeaveRequestVM();
            var leaveTypes = await _UnitOfWork.LeaveTypes.WhereAsync(x => x.CompanyId == currentEmployee.CompanyId);

            createLeaveRequestViewModel.LeaveTypes = _Mapper.Map <List <SelectListItem> >(leaveTypes);
            createLeaveRequestViewModel.StartDate  = DateTime.Now.Date;
            createLeaveRequestViewModel.EndDate    = DateTime.Now.AddDays(7).Date;
            var requests = await _UnitOfWork.LeaveRequest.WhereAsync(
                filter : x => x.RequestingEmployeeId == currentEmployee.Id,
                includes : new System.Linq.Expressions.Expression <Func <LeaveRequest, object> >[] { x => x.RequestingEmployee, x => x.LeaveType, x => x.ApprouvedBy });

            ViewBag.LeaveData = await GetLeaveSolds(requests, currentEmployee);

            return(View(createLeaveRequestViewModel));
        }
        public async Task <ActionResult> Create(CreateLeaveRequestVM model)
        {
            try
            {
                var startDate  = Convert.ToDateTime(model.StartDate);
                var endDate    = Convert.ToDateTime(model.EndDate);
                var leaveTypes = await _unitOfWork.LeaveTypes.FindAll();

                var employee = await _userManager.GetUserAsync(User);

                var period     = DateTime.Now.Year;
                var allocation = await _unitOfWork.LeaveAllocations.Find(q => q.EmployeeId == employee.Id &&
                                                                         q.Period == period &&
                                                                         q.LeaveTypeId == model.LeaveTypeId);

                int daysRequested  = (int)(endDate - startDate).TotalDays;
                var leaveTypeItems = leaveTypes.Select(q => new SelectListItem
                {
                    Text  = q.Name,
                    Value = q.Id.ToString()
                });
                model.LeaveTypes = leaveTypeItems;


                if (allocation == null)
                {
                    ModelState.AddModelError("", "You Have No Days Left");
                }
                if (DateTime.Compare(startDate, endDate) > 1)
                {
                    ModelState.AddModelError("", "Start Date cannot be further in the future than the End Date");
                }
                if (daysRequested > allocation.NumberOfDays)
                {
                    ModelState.AddModelError("", "You Do Not Sufficient Days For This Request");
                }
                if (!ModelState.IsValid)
                {
                    return(View(model));
                }

                var leaveRequestModel = new LeaveRequestVM
                {
                    RequestingEmployeeId = employee.Id,
                    StartDate            = startDate,
                    EndDate         = endDate,
                    Approved        = null,
                    DateRequested   = DateTime.Now,
                    DateActioned    = DateTime.Now,
                    LeaveTypeId     = model.LeaveTypeId,
                    RequestComments = model.RequestComments
                };

                var leaveRequest = _mapper.Map <LeaveRequest>(leaveRequestModel);
                await _unitOfWork.LeaveRequests.Create(leaveRequest);

                await _unitOfWork.Save();

                // Send Email to supervisor and requesting user
                await _emailSender.SendEmailAsync("*****@*****.**", "New Leave Request",
                                                  $"Please review this leave request. <a href='UrlOfApp/{leaveRequest.Id}'>Click Here</a>");

                return(RedirectToAction("MyLeave"));
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", "Something went wrong");
                return(View(model));
            }
        }
Exemple #24
0
        public ActionResult Create(CreateLeaveRequestVM model)
        {
            try
            {
                CultureInfo provider = CultureInfo.InvariantCulture;
                var         format   = "MM/dd/yyyy";


                var startDate = DateTime.ParseExact(model.StartDate, format, provider);
                var endDate   = DateTime.ParseExact(model.EndTime, format, provider);
                //var startDate = Convert.ToDateTime(model.StartDate, CultureInfo.CurrentCulture);
                //var endDate = Convert.ToDateTime(model.EndTime);
                var leavetypes     = _leaveTypeRepo.FindAll();
                var leaveTypeItems = leavetypes.Select(q => new SelectListItem
                {
                    Text  = q.Name,
                    Value = q.Id.ToString()
                });
                model.LeaveTypes = leaveTypeItems;

                if (!ModelState.IsValid)
                {
                    return(View(model));
                }

                if (DateTime.Compare(startDate, endDate) > 1)
                {
                    ModelState.AddModelError("", "Start Date cannot be further in the future than the End date");
                    return(View(model));
                }

                var employee     = _userManager.GetUserAsync(User).Result;
                var allocations  = _leaveAllocRepo.GetLeaveAllocationsByEmployeeAndType(employee.Id, model.LeaveTypeId);
                int daysRequired = (int)(endDate - startDate).TotalDays;
                if (daysRequired > allocations.NumberOfDays)
                {
                    ModelState.AddModelError("", "You do not have sufficient days for this request.");
                    return(View(model));
                }

                var leaveRequestModel = new LeaveRequestVM
                {
                    RequestingEmployeeId = employee.Id,
                    StartDate            = startDate,
                    EndDate       = endDate,
                    Approved      = null,
                    DateRequested = DateTime.Now,
                    DateActioned  = DateTime.Now,
                    LeaveTypeId   = model.LeaveTypeId
                };
                var leaveRequest = _mapper.Map <LeaveRequest>(leaveRequestModel);
                var isSuccess    = _leaveRequestRepo.Create(leaveRequest);
                if (!isSuccess)
                {
                    ModelState.AddModelError("", "Something went wrong");
                    return(View(model));
                }
                return(RedirectToAction("MyLeave"));
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", "Something went wrong");
                return(View(model));
            }
        }
Exemple #25
0
        public async Task <ActionResult> Create(CreateLeaveRequestVM model)
        {
            try
            {
                var startDate  = Convert.ToDateTime(model.StartDate);
                var endDate    = Convert.ToDateTime(model.EndDate);
                var leaveTypes = await _unitOfWork.LeaveTypes.FindAll();

                var leaveTypeItems = leaveTypes.Select(_ => new SelectListItem
                {
                    Text  = _.Name,
                    Value = _.Id.ToString()
                });

                model.LeaveTypes = leaveTypeItems;

                if (!ModelState.IsValid)
                {
                    return(View(model));
                }

                if (DateTime.Compare(startDate, endDate) > 1)
                {
                    ModelState.AddModelError("", "Start Date cannot be further in the future than the End Date.");
                    return(View(model));
                }

                var employee = await _userManager.GetUserAsync(User);

                var allocation = await _unitOfWork.LeaveAllocations.Find(_ => _.EmployeeId == employee.Id && _.LeaveTypeId == model.LeaveTypeId && _.Period == DateTime.Now.Year);

                int daysRequested = (int)(endDate.Date - startDate.Date).TotalDays;

                if (daysRequested > allocation.NumberOfDays)
                {
                    ModelState.AddModelError("", "You do not have sufficient days for this request.");
                    return(View(model));
                }

                var leaveRequestModel = new LeaveRequestVM
                {
                    RequestingEmloyeeId = employee.Id,
                    LeaveTypeId         = model.LeaveTypeId,
                    StartDate           = startDate,
                    EndDate             = endDate,
                    Approved            = null,
                    DateRequested       = DateTime.Now,
                    DateActioned        = DateTime.Now,
                    RequestComments     = model.RequestComments
                };

                var leaveRequest = _mapper.Map <LeaveRequest>(leaveRequestModel);
                await _unitOfWork.LeaveRequests.Create(leaveRequest);

                await _unitOfWork.Save();


                return(RedirectToAction(nameof(MyLeave)));
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", "Something went wrong.");
                return(View(model));
            }
        }
        public async Task <ActionResult> Create(CreateLeaveRequestVM model)
        {
            var leaveTypes = await _repoleavetype.FindAll();

            var leavetypeitems = leaveTypes.Select(x => new SelectListItem
            {
                Value = x.Id.ToString(),
                Text  = x.Name
            });

            model.LeaveTypes = leavetypeitems;
            try
            {
                var StartDate = Convert.ToDateTime(model.StartDate);
                var EndDate   = Convert.ToDateTime(model.EndDate);
                if (!ModelState.IsValid)
                {
                    return(View(model));
                }
                if (DateTime.Compare(StartDate, EndDate) > 1)
                {
                    ModelState.AddModelError("", "Starting Date cannot be greater then End Date...");
                    return(View(model));
                }

                var employee = await _userManager.GetUserAsync(User);

                var allocation = await _repoleaveallocation.GetLeaveAllocationsByEmployeeAndType(employee.Id, model.LeaveTypeId);

                var daysRequested = (int)(EndDate.Date - StartDate.Date).TotalDays;
                if (daysRequested > allocation.NumberOfDays)
                {
                    ModelState.AddModelError("", "You do not sufficient days for this Request...");
                    return(View(model));
                }
                var leaveRequestModel = new LeaveRequestVM
                {
                    RequestingEmployeeId = employee.Id,
                    StartDate            = StartDate,
                    EndDate        = EndDate,
                    Approved       = null,
                    DateRequested  = DateTime.Now,
                    DateActioned   = DateTime.Now,
                    LeaveTypeId    = model.LeaveTypeId,
                    CommentRequest = model.CommentRequest
                };

                var leaverequest = _mapper.Map <LeaveRequest>(leaveRequestModel);
                var isSuccess    = await _repoleaverequest.Create(leaverequest);

                if (!isSuccess)
                {
                    ModelState.AddModelError("", "Something Went Wrong with submitting your record...");
                    return(View(model));
                }
                return(RedirectToAction(nameof(MyLeave)));
            }
            catch
            {
                ModelState.AddModelError("", "Something Went Wrong...");
                return(View(model));
            }
        }
        public ActionResult Create(CreateLeaveRequestVM model)
        {
            var startDate          = Convert.ToDateTime(model.StartDate);
            var EndDate            = Convert.ToDateTime(model.EndDate);
            var leavetypes         = _leavTyperepo.FindAll();
            var leavetypeviewietms = leavetypes.Select(q => new SelectListItem
            {
                Text  = q.Name,
                Value = q.Id.ToString()
            });

            model.LeaveTypes = leavetypeviewietms;
            try
            {
                if (!ModelState.IsValid)

                {
                    return(View(model));
                }

                if (DateTime.Compare(startDate, EndDate) > 1)
                {
                    ModelState.AddModelError("", "Start date can not be further in the furture than End Date");
                    return(View(model));
                }
                var employee      = _userManager.GetUserAsync(User).Result;
                var allocations   = _leavAllocationrepo.GetLeaveAllocationsByEmployeeandType(employee.Id, model.LeaveTypeId);
                int daysRequested = (int)(EndDate - startDate).TotalDays;
                if (daysRequested > allocations.NumberOfDays)
                {
                    ModelState.AddModelError("", "You do not have sufficinet days for thsi Request");
                    return(View(model));
                }
                var leaveRequetsmodel = new LeaveRequestVM
                {
                    RequestingEmployeeId = employee.Id,
                    StartDate            = startDate,
                    EndDate         = EndDate,
                    Approved        = null,
                    DateRequested   = DateTime.Now,
                    DateActioned    = DateTime.Now,
                    LeaveTypeId     = model.LeaveTypeId,
                    RequestComments = model.RequestComments
                };

                var leaverequest = _mapper.Map <LeaveRequest>(leaveRequetsmodel);
                var isuccess     = _leaveRequestrepo.Create(leaverequest);

                if (!isuccess)
                {
                    ModelState.AddModelError("", "Somthing went wrong with somthing with submitting your record");
                    return(View(model));
                }
                return(RedirectToAction("MyLeave"));
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", "Somthing went wrong");
                return(View(model));
            }
        }
Exemple #28
0
        public async Task <ActionResult> Create(CreateLeaveRequestVM model)
        {
            try
            {
                var StartDate = Convert.ToDateTime(model.StartDate);
                var EndDate   = Convert.ToDateTime(model.EndDate);

                var leaveTypes     = _leaveTypeRepo.FindAll();
                var leaveTypeItems = (await leaveTypes).Select(q => new SelectListItem
                {
                    Text  = q.Name,
                    Value = q.Id.ToString()
                });
                model.LeaveTypes = leaveTypeItems;

                if (!ModelState.IsValid)
                {
                    return(View(model));
                }

                if (DateTime.Compare(StartDate, EndDate) > 0)
                {
                    ModelState.AddModelError("", "Ngày kết thúc phải sau ngày bắt đầu.");
                    return(View(model));
                }

                if (DateTime.Compare(StartDate, DateTime.Now.Date) < 0)
                {
                    ModelState.AddModelError("", "Ngày bắt đầu và ngày kết thúc phải ở tương lai." + DateTime.Now.Date.ToString());
                    return(View(model));
                }


                var employee = await _userManager.GetUserAsync(User);

                var allocation = await _leaveAllocationRepo.GetLeaveAllocationsByEmployeeAndType(employee.Id, model.LeaveTypeId);

                int daysRequested = (int)(EndDate - StartDate).TotalDays;

                if (daysRequested > allocation.NumberOfDays)
                {
                    ModelState.AddModelError("", "Số ngày bạn yêu cầu vượt quá số ngày cho phép");
                    return(View(model));
                }

                var previousApprovedLeaveRequests = (await _leaveRequestRepo.FindAll())
                                                    .Where(q => q.RequestingEmployeeId == employee.Id);
                foreach (var request in previousApprovedLeaveRequests)
                {
                    if (DateTime.Compare(StartDate, request.StartDate) > 0 && DateTime.Compare(StartDate, request.EndDate) < 0 ||
                        DateTime.Compare(EndDate, request.StartDate) > 0 && DateTime.Compare(EndDate, request.EndDate) < 0 ||
                        DateTime.Compare(StartDate, request.StartDate) <= 0 && DateTime.Compare(EndDate, request.EndDate) >= 0
                        )
                    {
                        ModelState.AddModelError("", "Khoảng thời gian nghỉ phép mà bạn yêu cầu trùng với khoảng thời gian nghỉ phép đã gửi.");
                        return(View(model));
                    }
                }

                var LichSuChamCongList = await nhatKylamViecRepository.FindByMaNhanVien(employee.Id);

                foreach (var item in LichSuChamCongList)
                {
                    if (StartDate.CompareTo(item.ThoiGianBatDau) >= 0 && StartDate.CompareTo(item.ThoiGianKetThuc) < 0
                        ||
                        EndDate.CompareTo(item.ThoiGianBatDau) > 0 && EndDate.CompareTo(item.ThoiGianKetThuc) <= 0)
                    {
                        ModelState.AddModelError("", "Khoảng thời gian được chọn bị trùng với lịch biểu trước đó" +
                                                 "\n Khoảng thời gian được chọn: " + StartDate + " => " + EndDate +
                                                 "\n Lịch biểu bị trùng: " + item.ThoiGianBatDau + " => " + item.ThoiGianKetThuc);
                        return(View(model));
                    }
                }

                var leaveRequestModel = new LeaveRequestVM
                {
                    RequestingEmployeeId = employee.Id,
                    StartDate            = StartDate,
                    EndDate       = EndDate,
                    ApprovedById  = null,
                    DateRequested = DateTime.Now,
                    DateActioned  = DateTime.Now,
                    LeaveTypeId   = model.LeaveTypeId
                };

                var leaveRequest = _mapper.Map <LeaveRequest>(leaveRequestModel);
                var isSuccess    = await _leaveRequestRepo.Create(leaveRequest);

                if (!isSuccess)
                {
                    ModelState.AddModelError("", "Something went wrong with submitting your record");
                    return(View(model));
                }
                return(RedirectToAction(nameof(MyLeave)));
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", "Something went wrong");
                return(View(model));
            }
        }
        public async Task <ActionResult> Create(CreateLeaveRequestVM model)
        {
            try
            {
                var startDate = model.StartDate;
                var endDate   = model.EndDate;

                // var leaveTypes =await _leaveTyperepo.FindAll();
                var leaveTypes = await _unitOfWork.LeaveTypes.FindAll();

                var leaveTypesItems = leaveTypes.Select(q => new SelectListItem
                {
                    Text  = q.Name,
                    Value = q.Id.ToString()
                });
                model.LeaveTypes = leaveTypesItems;

                if (!ModelState.IsValid)
                {
                    return(View(model));
                }


                //check startdate is larger than enddate
                // if 0 => just one day
                // if -1 => not large
                //if 1 => large

                if (DateTime.Compare(startDate, endDate) > 1)
                {
                    ModelState.AddModelError("", "Start Date cannot be further in the future than the End Date!");
                    return(View(model));
                }

                var employee = await _userManager.GetUserAsync(User);

                //var allocation =await _leaveAllocationrepo.GetLeaveAllocationsByEmployeeAndType(employee.Id, model.LeaveTypeId);
                var period     = DateTime.Now.Year;
                var allocation = await _unitOfWork.LeaveAllocations.Find(q => q.EmployeeId == employee.Id && q.Period == period && q.LeaveTypeId == model.LeaveTypeId);

                int dateRequests = (int)(endDate - startDate).TotalDays;

                if (dateRequests > allocation.NumberOfDays)
                {
                    ModelState.AddModelError("", "You have no Sufficient Days for this request!");
                    return(View(model));
                }

                var leaveRequestModel = new LeaveRequestVM
                {
                    LeaveTypeId          = model.LeaveTypeId,
                    RequestingEmployeeId = employee.Id,
                    StartDate            = startDate,
                    EndDate          = endDate,
                    Approved         = null,
                    DateRequested    = DateTime.Now,
                    DateActioned     = DateTime.Now,
                    RequestCommments = model.RequestComments
                };

                var leaveRequest = _mapper.Map <LeaveRequest>(leaveRequestModel);

                //var isSuccess =await _leaveRequestRepo.Create(leaveRequest);
                //if (!isSuccess)
                //{
                //    ModelState.AddModelError("", "Something Went Wrong ...");
                //    return View(model);
                //}

                await _unitOfWork.LeaveRequests.Create(leaveRequest);

                await _unitOfWork.Save();

                return(RedirectToAction("MyLeave"));
            }
            catch
            {
                return(View(model));
            }
        }
Exemple #30
0
        public async Task <ActionResult> Create(CreateLeaveRequestVM model)
        {
            try
            {
                var startDate  = Convert.ToDateTime(model.StartDate);
                var endDate    = Convert.ToDateTime(model.EndDate);
                var leaveTypes = await _leaveTypeRepo.FindAll();

                var employee = await _userManager.GetUserAsync(User);

                var allocation = await _leaveAllocRepo.GetLeaveAllocationsByEmployeeAndType(employee.Id, model.LeaveTypeId);

                int daysRequested  = (int)(endDate - startDate).TotalDays;
                var leaveTypeItems = leaveTypes.Select(q => new SelectListItem
                {
                    Text  = q.Name,
                    Value = q.Id.ToString()
                });
                model.LeaveTypes = leaveTypeItems;


                if (allocation == null)
                {
                    ModelState.AddModelError("", "You Have No Days Left");
                }
                if (DateTime.Compare(startDate, endDate) > 1)
                {
                    ModelState.AddModelError("", "Start Date cannot be further in the future than the End Date");
                }
                if (daysRequested > allocation.NumberofDays)
                {
                    ModelState.AddModelError("", "You Do Not Sufficient Days For This Request");
                }
                if (!ModelState.IsValid)
                {
                    return(View(model));
                }

                var leaveRequestModel = new LeaveRequestVM
                {
                    RequestingEmployeeId = employee.Id,
                    StartDate            = startDate,
                    EndDate       = endDate,
                    Approved      = null,
                    DateRequested = DateTime.Now,
                    DateActioned  = DateTime.Now,
                    LeaveTypeId   = model.LeaveTypeId,
                };

                var leaveRequest = _mapper.Map <LeaveRequest>(leaveRequestModel);
                var isSuccess    = await _leaveRequestRepo.Create(leaveRequest);

                if (!isSuccess)
                {
                    ModelState.AddModelError("", "Something went wrong with submitting your record");
                    return(View(model));
                }

                return(RedirectToAction("MyLeave"));
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", "Something went wrong");
                return(View(model));
            }
        }