Beispiel #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));
            }
        }
Beispiel #2
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));
            }
        }
Beispiel #3
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));
            }
        }
        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));
            }
        }
Beispiel #5
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));
            }
        }
Beispiel #6
0
 public bool Insert(LeaveRequestVM leaveRequestVM)
 {
     if (string.IsNullOrWhiteSpace(leaveRequestVM.Requester_Id.ToString()))
     {
         return(status);
     }
     else if (string.IsNullOrWhiteSpace(leaveRequestVM.FromDate.ToString()))
     {
         return(status);
     }
     else if (string.IsNullOrWhiteSpace(leaveRequestVM.EndDate.ToString()))
     {
         return(status);
     }
     else if (string.IsNullOrEmpty(leaveRequestVM.Reason.ToString()))
     {
         return(status);
     }
     else if (string.IsNullOrEmpty(leaveRequestVM.Leave_Id.ToString()))
     {
         return(status);
     }
     else
     {
         return(iLeaveRequestRepository.Insert(leaveRequestVM));
     }
 }
Beispiel #7
0
 protected override void OnAppearing()
 {
     Vm             = new LeaveRequestVM();
     BindingContext = Vm;
     applicationno  = SecureStorage.GetAsync("applicationNo").GetAwaiter().GetResult();
     // Vm.gethosteladmissionid(applicationno);
 }
Beispiel #8
0
 public void Update(LeaveRequestVM leaverequestVM)
 {
     this.FromDate         = leaverequestVM.FromDate;
     this.ToDate           = leaverequestVM.ToDate;
     this.Reason           = leaverequestVM.Reason;
     this.ApproverComments = leaverequestVM.ApproverComments;
     this.Status           = leaverequestVM.Status;
     this.UpdateDate       = DateTimeOffset.Now.LocalDateTime;
 }
        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));
            }
        }
 public LeeaveRequest(LeaveRequestVM leaveRequestVM)
 {
     this.FromDate         = leaveRequestVM.FromDate;
     this.ToDate           = leaveRequestVM.ToDate;
     this.Reason           = leaveRequestVM.Reason;
     this.ApproverComments = leaveRequestVM.ApproverComments;
     this.Status           = leaveRequestVM.Status;
     this.Employees_Id     = leaveRequestVM.Employees_Id;
     this.CreateDate       = DateTimeOffset.Now.LocalDateTime;
 }
        public bool Insert(LeaveRequestVM leaveRequestVM)
        {
            var push        = new LeeaveRequest(leaveRequestVM);
            var getCategory = aplicationContext.LeaveCategories.SingleOrDefault(x => x.IsDelete == false && x.Id == leaveRequestVM.Leave_Categories_Id);

            push.LeaveCategory = getCategory;
            aplicationContext.LeaveRequest.Add(push);
            var result = aplicationContext.SaveChanges();

            return(result > 0);
        }
        private void btn_Save_Click(object sender, RoutedEventArgs e)
        {
            var result            = false;
            var LeaveRequestParam = new LeaveRequestVM(Convert.ToInt32(cmb_LeaveType.SelectedValue),
                                                       Convert.ToDateTime(date_LeaveStarts.Text),
                                                       Convert.ToDateTime(date_LeaveEnds.Text), DateTimeOffset.Now, txt_Reason.Text,
                                                       _userId, "lampiran", 5);

            result = iLeaveRequestService.Insert(LeaveRequestParam);
            MessageBox.Show(result ? "Insert Successfully" : "Insert Failed");
        }
 public void Update(LeaveRequestVM leaveRequestVM)
 {
     this.Request_Date = leaveRequestVM.Request_Date;
     this.From_Date    = leaveRequestVM.From_Date;
     this.End_Date     = leaveRequestVM.End_Date;
     this.Employee_Id  = leaveRequestVM.Employee_Id;
     this.Attachment   = leaveRequestVM.Attachment;
     this.Reason       = leaveRequestVM.Reason;
     this.Manager_Id   = leaveRequestVM.Manager_Id;
     this.Status       = leaveRequestVM.Status;
     this.UpdateDate   = DateTimeOffset.Now.ToLocalTime();
 }
Beispiel #14
0
        public LeaveRequest(LeaveRequestVM leaveRequestVM)
        {
            Leave_Id     = leaveRequestVM.Leave_Id;
            FromDate     = leaveRequestVM.FromDate;
            EndDate      = leaveRequestVM.EndDate;
            RequestDate  = leaveRequestVM.RequestDate;
            Reason       = leaveRequestVM.Reason;
            Requester_Id = leaveRequestVM.Requester_Id;
//            ApprovalManager_Id = leaveRequestVM.ApprovalManager_Id;
//            ApprovalHrd_Id = leaveRequestVM.ApprovalManager_Id;
            Attachments = leaveRequestVM.Attachments;
            Status_Id   = leaveRequestVM.Status_Id;
            CreateDate  = DateTimeOffset.Now.ToLocalTime();
        }
        public bool Update(int id, LeaveRequestVM leaveRequestVM)
        {
            var get          = Get(id);
            var getLeaveType = myContext.LeaveTypes.Find(leaveRequestVM.LeaveType_Id);

            get.LeaveType = getLeaveType;
            if (get != null)
            {
                get.Update(leaveRequestVM);
                myContext.Entry(get).State = EntityState.Modified;
                myContext.SaveChanges();
                status = true;
            }
            return(status);
        }
        public async Task <ActionResult <LeaveRequest> > PostLeaveRequest(LeaveRequestVM LeaveRequestObj)
        {
            System.Security.Claims.ClaimsPrincipal currentUser = this.User;
            var email    = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Email).Value;
            var lstUsers = _context.Employees.Where(e => e.Email == email).ToList();

            if (lstUsers.Count > 0)
            {
                var CurrentEmpUser = lstUsers[0];
                if (LeaveRequestObj.EmployeeID == 0)
                {
                    LeaveRequestObj.EmployeeID = CurrentEmpUser.ID;
                }
                LeaveRequestObj.Date = DateTime.Now;
                LeaveRequest lv = new LeaveRequest
                {
                    Date               = LeaveRequestObj.Date,
                    Comment            = LeaveRequestObj.Comment,
                    AlternativeEmpID   = LeaveRequestObj.AlternativeEmpID,
                    EmployeeID         = LeaveRequestObj.EmployeeID,
                    LeaveTypeID        = LeaveRequestObj.LeaveTypeID,
                    AlternativeAddress = LeaveRequestObj.AlternativeAddress,
                    Start              = LeaveRequestObj.Start,
                    Status             = LeaveRequestObj.Status,
                    Days               = LeaveRequestObj.Days
                };
                _context.LeaveRequests.Add(lv);
                await _context.SaveChangesAsync();

                if (LeaveRequestObj.LeavesFiles != null)
                {
                    var files = LeaveRequestObj.LeavesFiles.Split(',').ToList();

                    files.Remove("");
                    foreach (var item in files)
                    {
                        LeaveFiles leaveFiles = new LeaveFiles
                        {
                            FileName       = item,
                            LeaveRequestID = lv.ID
                        };
                        _context.LeaveFiles.Add(leaveFiles);
                    }
                }
                await _context.SaveChangesAsync();
            }
            return(CreatedAtAction("GetLeaveRequest", new { id = LeaveRequestObj.ID }, LeaveRequestObj));
        }
        public bool Update(int id, LeaveRequestVM leaveRequestVM)
        {
            var get = Get(id);

            if (get != null)
            {
                get.Update(leaveRequestVM);
                aplicationContext.Entry(get).State = EntityState.Modified;
                var result = aplicationContext.SaveChanges();
                return(result > 0);
            }
            else
            {
                return(false);
            }
        }
        public bool Insert(LeaveRequestVM leaveRequestVM)
        {
            var push         = new LeaveRequest(leaveRequestVM);
            var getLeaveType = myContext.LeaveTypes.Find(leaveRequestVM.LeaveType_Id);

            push.LeaveType = getLeaveType;
            myContext.LeaveRequests.Add(push);
            var result = myContext.SaveChanges();

            if (result > 0)
            {
                status = true;
            }

            return(status);
        }
Beispiel #19
0
 // POST: api/LeaveRequests
 public HttpResponseMessage InsertLeaveRequest(LeaveRequestVM leaveRequestVM)
 {
     try
     {
         var message = Request.CreateErrorResponse(HttpStatusCode.NotFound, "404 : Data Not Found");
         var result  = iLeaveRequestService.Insert(leaveRequestVM);
         if (result)
         {
             message = Request.CreateResponse(HttpStatusCode.OK, leaveRequestVM);
         }
         return(message);
     }
     catch (Exception e)
     {
         return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "500 : Internal Server Error"));
     }
 }
Beispiel #20
0
        public bool Insert(LeaveRequestVM leaveRequestVM)
        {
            var push = new LeaveRequest(leaveRequestVM);

            myContext.leaveRequests.Add(push);
            var result = myContext.SaveChanges();

            if (result > 0)
            {
                status = true;
            }
            else
            {
                return(status);
            }
            return(status);
        }
Beispiel #21
0
 public bool Update(int id, LeaveRequestVM leaveRequestVM)
 {
     if (string.IsNullOrWhiteSpace(leaveRequestVM.Request_Date.ToString()) ||
         string.IsNullOrWhiteSpace(leaveRequestVM.From_Date.ToString()) ||
         string.IsNullOrWhiteSpace(leaveRequestVM.End_Date.ToString()) ||
         string.IsNullOrWhiteSpace(leaveRequestVM.Employee_Id.ToString()) ||
         string.IsNullOrWhiteSpace(leaveRequestVM.Reason) ||
         string.IsNullOrWhiteSpace(leaveRequestVM.LeaveType_Id.ToString()) ||
         string.IsNullOrWhiteSpace(leaveRequestVM.Status) ||
         string.IsNullOrWhiteSpace(leaveRequestVM.Manager_Id.ToString()))
     {
         return(false);
     }
     else
     {
         return(iLeaveRequestRepository.Update(id, leaveRequestVM));
     }
 }
        public void InsertOrUpdate(LeaveRequestVM leaveRequestVM)
        {
            var client = new HttpClient();

            client.BaseAddress = new Uri(get.link);
            var myContent   = JsonConvert.SerializeObject(leaveRequestVM);
            var buffer      = System.Text.Encoding.UTF8.GetBytes(myContent);
            var byteContent = new ByteArrayContent(buffer);

            byteContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
            if (leaveRequestVM.Id.Equals(0))
            {
                var result = client.PostAsync("LeaveRequests", byteContent).Result;
            }
            else
            {
                var result = client.PutAsync("LeaveRequests/" + leaveRequestVM.Id, byteContent).Result;
            }
        }
        public JsonResult GetById(int id)
        {
            LeaveRequestVM leaveRequestVM = null;
            var            client         = new HttpClient
            {
                BaseAddress = new Uri(get.link)
            };
            var responseTask = client.GetAsync("LeaveRequests/" + id);

            responseTask.Wait();
            var result = responseTask.Result;

            if (result.IsSuccessStatusCode)
            {
                var readTask = result.Content.ReadAsAsync <LeaveRequestVM>();
                responseTask.Wait();
                leaveRequestVM = readTask.Result;
            }
            else
            {
            }
            return(Json(leaveRequestVM, JsonRequestBehavior.AllowGet));
        }
        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));
            }
        }
Beispiel #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));
            }
        }
Beispiel #26
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));
            }
        }
Beispiel #27
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));
            }
        }
        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));
            }
        }
        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));
            }
        }
        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));
            }
        }