예제 #1
0
        public ActionResult Download(TimeSheetSearchViewModel vm)
        {
            // Get only mine and my reportees
            var loginEmployee = _employeeRepository.GetBy(r => r.UserId == WebUser.Id);
            var myReportees   = _employeeRepository.GetAllBy(u => u.ReportingPersonId == loginEmployee.Id && u.EmployeeStatus != EmployeeStatus.Ex).Select(u => u.UserId).ToList();
            var userList      = _userRepository.GetAllBy(u => myReportees.Contains(u.Id) || u.Id == WebUser.Id, "Person").ToList();


            Func <IQueryable <TimeSheetLineItem>, IQueryable <TimeSheetLineItem> > timeSheetLineItemFilter = q =>
            {
                q = q.Include("TimeSheet.CreatedByUser.Person").Include("TimeSheet.CreatedByUser.Department").Include("Project").Include("Task");

                if (vm.SubmittedUserById.HasValue)
                {
                    q = q.Where(r => r.TimeSheet.CreatedByUserId == vm.SubmittedUserById.Value);
                }

                if (vm.State.HasValue)
                {
                    q = q.Where(r => r.TimeSheet.State == vm.State.Value);
                }

                if (vm.StartDate.HasValue)
                {
                    q = q.Where(r => r.TimeSheet.Date >= vm.StartDate.Value);
                }

                if (vm.EndDate.HasValue)
                {
                    q = q.Where(r => r.TimeSheet.Date <= vm.EndDate.Value);
                }
                if (PermissionChecker.CheckPermission(WebUser.Permissions, 550))
                {
                    var user         = _userRepository.GetAllBy(u => u.Id != 1, "Person").ToList();
                    var usersListIds = user.Select(u => u.Id).ToList();
                    q = q.Where(r => usersListIds.Contains(r.TimeSheet.CreatedByUserId));
                }
                else
                {
                    var userListIds = userList.Select(u => u.Id).ToList();
                    q = q.Where(r => userListIds.Contains(r.TimeSheet.CreatedByUserId));
                }



                q = q.OrderByDescending(d => d.CreatedOn);

                return(q);
            };

            var timeSheets = _timeSheetLineItemRepository.Search(timeSheetLineItemFilter);

            return(ExportAsCSV(timeSheets));
        }
예제 #2
0
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            var loggedInUser = filterContext.HttpContext.User as Principal;

            if (loggedInUser != null)
            {
                // First check for Permission Code, Most case we will use a single Permission
                if (!PermissionChecker.CheckPermission(loggedInUser.Permissions, PermissionCode))
                {
                    filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary
                    {
                        { "controller", "Error" },
                        { "action", "NotAuthorized" },
                        { "area", "" }
                    });
                }

                // Fallback, Check for multiple Permissions
                var counter = 0;
                if (PermissonList != null && PermissonList.Length > 0)
                {
                    counter += PermissonList.Count(selectedPermissionCode => PermissionChecker.CheckPermission(loggedInUser.Permissions, selectedPermissionCode));

                    if (counter <= 0)
                    {
                        filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary
                        {
                            { "controller", "Error" },
                            { "action", "NotAuthorized" },
                            { "area", "" }
                        });
                    }
                }
            }
            else
            {
                filterContext.Result = new HttpUnauthorizedResult();
            }
        }
예제 #3
0
        public ActionResult Index(string type, string mode = "Manage")
        {
            var fields = new List <UIField>();

            switch (type)
            {
            case "Projects":
                fields = new List <UIField>
                {
                    UIField.GetField("Title"),
                    UIField.GetField("Status", "Status"),
                    UIField.GetField("CreatedOn", "Applied On", UIFieldTypes.DateTime)
                };
                break;

            case "Tickets":
                fields = new List <UIField>
                {
                    UIField.GetField("Title"),
                    UIField.GetField("DueDate", "Due Date", UIFieldTypes.DateTime),
                    UIField.GetField("Status", "Status"),
                    UIField.GetField("CreatedOn", "Applied On", UIFieldTypes.DateTime)
                };
                break;

            case "TeamLeaves":
                fields = new List <UIField>
                {
                    UIField.GetField("CreatedByUser.Person.Name", "Employee"),
                    UIField.GetField("LeaveType.Title", "Leave Type"),
                    UIField.GetField("Duration"),
                    UIField.GetField("Start", "Start Date", UIFieldTypes.DateTime),
                    UIField.GetField("Start", "End Date", UIFieldTypes.DateTime),
                    UIField.GetField("CreatedOn", "Applied On", UIFieldTypes.DateTime),
                    UIField.GetField("Status", "Status")
                };
                break;

            case "leaves":
                fields = new List <UIField>
                {
                    UIField.GetField("Employee", "Employee"),
                    UIField.GetField("LeaveType", "Leave Type"),
                    UIField.GetField("Duration"),
                    UIField.GetField("Period", "Period"),
                    UIField.GetField("CreatedOn", "Applied On", UIFieldTypes.TimeAgo),
                    UIField.GetField("Status", "Status"),
                    UIField.GetField("Approver", "Approver"),
                };

                ViewBag.Mode = mode == "Manage" ? "Manage" : "ReadOnly";
                return(PartialView("_LeaveListTemplate", fields));

            case "locations":
                fields = new List <UIField>
                {
                    UIField.GetField("Title"),
                    UIField.GetField("Phone"),
                    UIField.GetField("CreatedOn", "Created On", UIFieldTypes.DateTime)
                };
                ViewBag.Mode = mode == "Manage" ? "Manage" : "ReadOnly";
                return(PartialView("_ListTemplate", fields));

            case "Permissions":
                fields = new List <UIField>
                {
                    UIField.GetField("Title"),
                    UIField.GetField("PermissionCode"),
                    UIField.GetField("CreatedOn", "Created On", UIFieldTypes.DateTime)
                };
                break;

            case "roles":
                fields = new List <UIField>
                {
                    UIField.GetField("Name"),
                    UIField.GetField("CreatedOn", "Created On", UIFieldTypes.DateTime)
                };
                ViewBag.Mode = mode == "Manage" ? "Manage" : "ReadOnly";
                return(PartialView("_ListTemplate", fields));

            case "technologies":
                fields = new List <UIField>
                {
                    UIField.GetField("Title"),
                    UIField.GetField("Icon"),
                    UIField.GetField("Category"),
                    UIField.GetField("CreatedOn", "Created On", UIFieldTypes.DateTime)
                };
                ViewBag.Mode = mode == "Manage" ? "Manage" : "ReadOnly";
                return(PartialView("_ListTemplate", fields));

            case "awards":
                fields = new List <UIField>
                {
                    UIField.GetField("Title"),
                    UIField.GetField("CreatedOn", "Created On", UIFieldTypes.DateTime)
                };
                ViewBag.Mode = mode == "Manage" ? "Manage" : "ReadOnly";
                return(PartialView("_ListTemplate", fields));

            case "emailtemplates":
                fields = new List <UIField>
                {
                    UIField.GetField("Name"),
                    UIField.GetField("CreatedOn", "Created On", UIFieldTypes.DateTime)
                };
                ViewBag.Mode = mode == "Manage" ? "Manage" : "ReadOnly";
                return(PartialView("_ListTemplate", fields));

            case "departments":
                fields = new List <UIField>
                {
                    UIField.GetField("Title"),
                    UIField.GetField("MailAlias", "Mail Alias"),
                    UIField.GetField("CreatedOn", "Created On", UIFieldTypes.DateTime)
                };
                ViewBag.Mode = mode == "Manage" ? "Manage" : "ReadOnly";
                return(PartialView("_ListTemplate", fields));

            case "designations":
                fields = new List <UIField>
                {
                    UIField.GetField("Title"),
                    UIField.GetField("Department", "Department"),
                    UIField.GetField("MailAlias", "Mail Alias"),
                    UIField.GetField("CreatedOn", "Created On", UIFieldTypes.DateTime)
                };
                ViewBag.Mode = mode == "Manage" ? "Manage" : "ReadOnly";
                return(PartialView("_ListTemplate", fields));

            case "shifts":
                fields = new List <UIField>
                {
                    UIField.GetField("Title"),
                    UIField.GetField("StartTime", "Start Time", UIFieldTypes.DateTime),
                    UIField.GetField("EndTime", "End Time", UIFieldTypes.DateTime),
                    UIField.GetField("NeedsCompensation", "Needs Compensation"),
                    UIField.GetField("CreatedOn", "Created On", UIFieldTypes.DateTime)
                };
                ViewBag.Mode = mode == "Manage" ? "Manage" : "ReadOnly";
                return(PartialView("_ListTemplate", fields));

            case "skills":
                fields = new List <UIField>
                {
                    UIField.GetField("Title"),
                    UIField.GetField("CreatedOn", "Created On", UIFieldTypes.DateTime)
                };
                ViewBag.Mode = mode == "Manage" ? "Manage" : "ReadOnly";
                return(PartialView("_ListTemplate", fields));

            case "hobbies":
                fields = new List <UIField>
                {
                    UIField.GetField("Title"),
                    UIField.GetField("CreatedOn", "Created On", UIFieldTypes.DateTime)
                };
                ViewBag.Mode = mode == "Manage" ? "Manage" : "ReadOnly";
                return(PartialView("_ListTemplate", fields));

            case "certifications":
                fields = new List <UIField>
                {
                    UIField.GetField("Title"),
                    UIField.GetField("CreatedOn", "Created On", UIFieldTypes.DateTime)
                };
                ViewBag.Mode = mode == "Manage" ? "Manage" : "ReadOnly";
                return(PartialView("_ListTemplate", fields));

            case "JobOpenings":
                fields = new List <UIField>
                {
                    UIField.GetField("Title"),
                    UIField.GetField("Vacancies", "Vacancy Count"),
                    UIField.GetField("Status", "Status"),
                    UIField.GetField("CreatedOn", "Created On", UIFieldTypes.DateTime)
                };
                break;

            case "CandidateDesignations":
                fields = new List <UIField>
                {
                    UIField.GetField("Title"),
                    UIField.GetField("CreatedOn", "Created On", UIFieldTypes.DateTime)
                };
                break;

            case "Rounds":
                fields = new List <UIField>
                {
                    UIField.GetField("Title"),
                    UIField.GetField("CreatedOn", "Created On", UIFieldTypes.DateTime)
                };
                break;

            case "Offers":
                fields = new List <UIField>
                {
                    UIField.GetField("CreatedOn", "Created On", UIFieldTypes.DateTime)
                };
                break;

            case "vendor":
                fields = new List <UIField>
                {
                    UIField.GetField("Title", "Name"),
                    UIField.GetField("Email"),
                };
                ViewBag.Mode = mode == "Manage" ? "Manage" : "ReadOnly";
                return(PartialView("_ListTemplate", fields));

            case "holiday":
                if (PermissionChecker.CheckPermission(ViewBag.Permissions as List <int>, 215))
                {
                    ViewBag.IsManage = true;
                }
                fields = new List <UIField>
                {
                    UIField.GetField("Type", "Type"),
                    UIField.GetField("Title"),
                    UIField.GetField("Date", "Date", UIFieldTypes.DateTime)
                };
                ViewBag.Mode = mode == "Manage" ? "Manage" : "ReadOnly";
                return(PartialView("_HolidayListTemplate", fields));

            case "leavetype":
                fields = new List <UIField>
                {
                    UIField.GetField("Title"),
                    UIField.GetField("MaxInAStretch", "Max in Stretch"),
                    UIField.GetField("MaxInMonth", "Max in Month"),
                    UIField.GetField("CanCarryForward", "Can Carry Forward"),
                    UIField.GetField("MaxCarryForward", "Max Carry Forward")
                };
                ViewBag.Mode = mode == "Manage" ? "Manage" : "ReadOnly";
                return(PartialView("_ListTemplate", fields));

            case "leavetimeperiod":
                fields = new List <UIField>
                {
                    UIField.GetField("Title"),
                    UIField.GetField("Start", "Start Date", UIFieldTypes.DateTime),
                    UIField.GetField("End", "End Date", UIFieldTypes.DateTime)
                };
                ViewBag.Mode = mode == "Manage" ? "Manage" : "ReadOnly";
                return(PartialView("_ListTemplate", fields));

            case "Vendors":
                fields = new List <UIField>
                {
                    UIField.GetField("Title"),
                    UIField.GetField("Email"),
                    UIField.GetField("Phone"),
                    UIField.GetField("CreatedOn", "Created On", UIFieldTypes.DateTime)
                };
                break;

            case "assets":
                fields = new List <UIField>
                {
                    UIField.GetField("Title", "Title"),
                    UIField.GetField("TagNumber", "Tag"),
                    UIField.GetField("ModelNumber", "Model"),
                    UIField.GetField("Department", "Department"),
                    UIField.GetField("AllocatedEmployee", "Allocated To"),
                };
                ViewBag.Mode = mode == "Manage" ? "Manage" : "ReadOnly";
                return(PartialView("_AssetListTemplate", fields));

            case "employeeassets":
                fields = new List <UIField>
                {
                    UIField.GetField("Title", "Title"),
                    UIField.GetField("TagNumber", "Tag"),
                    UIField.GetField("ModelNumber", "Model"),
                    UIField.GetField("Department", "Department"),
                    UIField.GetField("AssetCategory", "AssetCategory"),
                };
                ViewBag.Mode = mode == "Manage" ? "Manage" : "ReadOnly";
                return(PartialView("_LeaveEntitlementsListTemplate", fields));

            case "assetallocationhistory":
                fields = new List <UIField>
                {
                    UIField.GetField("AllocatedEmployee", "Allocated To"),
                    UIField.GetField("StateType", "State"),
                    UIField.GetField("AllocatedOn", "Allocated On", UIFieldTypes.DateTime)
                };
                ViewBag.Mode = mode == "Manage" ? "Manage" : "ReadOnly";
                return(PartialView("_ProjectMembersListTemplate", fields));

            case "assetcategories":
                fields = new List <UIField>
                {
                    UIField.GetField("Title"),
                    UIField.GetField("CreatedOn", "Created On", UIFieldTypes.DateTime)
                };
                ViewBag.Mode = mode == "Manage" ? "Manage" : "ReadOnly";
                return(PartialView("_ListTemplate", fields));

            case "softwarecategories":
                fields = new List <UIField>
                {
                    UIField.GetField("Title"),
                    UIField.GetField("CreatedOn", "Created On", UIFieldTypes.DateTime)
                };
                ViewBag.Mode = mode == "Manage" ? "Manage" : "ReadOnly";
                return(PartialView("_ListTemplate", fields));

            case "softwares":
                fields = new List <UIField>
                {
                    UIField.GetField("Title"),
                    UIField.GetField("Version"),
                    UIField.GetField("StatusName", "Status"),
                };
                ViewBag.Mode = mode == "Manage" ? "Manage" : "ReadOnly";
                return(PartialView("_ListTemplate", fields));

            case "projectmemberroles":
                fields = new List <UIField>
                {
                    UIField.GetField("Title", "Name"),
                    UIField.GetField("Department", "Department"),
                    UIField.GetField("RoleType", "Role"),
                    UIField.GetField("CreatedOn", "Created On", UIFieldTypes.DateTime)
                };
                ViewBag.Mode = mode == "Manage" ? "Manage" : "ReadOnly";
                return(PartialView("_ListTemplate", fields));

            case "CRMAccounts":
                fields = new List <UIField>
                {
                    UIField.GetField("Title"),
                    UIField.GetField("Industry"),
                    UIField.GetField("Email"),
                    UIField.GetField("PhoneNo"),
                    UIField.GetField("CreatedOn", "Created On", UIFieldTypes.DateTime)
                };
                break;

            case "requirementcategories":
                fields = new List <UIField>
                {
                    UIField.GetField("Title"),
                    UIField.GetField("CreatedOn", "Created On", UIFieldTypes.DateTime)
                };
                ViewBag.Mode = mode == "Manage" ? "Manage" : "ReadOnly";
                return(PartialView("_ListTemplate", fields));

            case "Categories":
                fields = new List <UIField>
                {
                    UIField.GetField("Title"),
                    UIField.GetField("IsPublic"),
                    UIField.GetField("CreatedOn", "Created On", UIFieldTypes.DateTime)
                };
                break;

            case "ticketcategories":
                fields = new List <UIField>
                {
                    UIField.GetField("Title"),
                    UIField.GetField("CreatedOn", "Created On", UIFieldTypes.DateTime)
                };
                ViewBag.Mode = mode == "Manage" ? "Manage" : "ReadOnly";
                return(PartialView("_ListTemplate", fields));

            case "ticketsubcategories":
                fields = new List <UIField>
                {
                    UIField.GetField("Title"),
                    UIField.GetField("CreatedOn", "Created On", UIFieldTypes.DateTime)
                };
                ViewBag.Mode = mode == "Manage" ? "Manage" : "ReadOnly";
                return(PartialView("_ListTemplate", fields));

            case "Users":
                fields = new List <UIField>
                {
                    UIField.GetField("EmployeeCode", "Code"),
                    UIField.GetField("EmployeeStatus", "Status"),
                    UIField.GetField("RequiresTimeSheet", "TimeSheet"),
                    UIField.GetField("CreatedOn", "Created On", UIFieldTypes.DateTime)
                };
                break;

            case "Articles":
                fields = new List <UIField>
                {
                    UIField.GetField("Title"),
                    UIField.GetField("Category.Title", "Category"),
                    UIField.GetField("IsPublic"),
                    UIField.GetField("IsFeatured"),
                    UIField.GetField("Hits"),
                    UIField.GetField("Rating"),
                    UIField.GetField("Version"),
                    UIField.GetField("State"),
                    UIField.GetField("CreatedOn", "Created On", UIFieldTypes.DateTime)
                };
                break;

            case "employees":
                fields = new List <UIField>
                {
                    UIField.GetField("User", "Name"),
                    UIField.GetField("EmployeeCode", "Code"),
                    UIField.GetField("Department", "Department"),
                    UIField.GetField("Designation", "Designation"),
                };
                return(PartialView("_EmployeeListTemplate", fields));

            case "dependents":
                fields = new List <UIField>
                {
                    UIField.GetField("Dependent", "Dependent Type"),
                    UIField.GetField("Name"),
                };
                ViewBag.Mode = mode == "Manage" ? "Manage" : "ReadOnly";
                return(PartialView("_ListTemplate", fields));

            case "emergencycontacts":
                fields = new List <UIField>
                {
                    UIField.GetField("Name"),
                    UIField.GetField("RelationshipType", "Relationship")
                };
                ViewBag.Mode = mode == "Manage" ? "Manage" : "ReadOnly";
                return(PartialView("_ListTemplate", fields));

            case "entitlementhistorylists":
                fields = new List <UIField>
                {
                    UIField.GetField("LeaveTimePeriod", "Time Period"),
                    UIField.GetField("LeaveType", "Leave Type"),
                    UIField.GetField("CreatedOn", "Created On", UIFieldTypes.DateTime)
                };
                ViewBag.Mode = mode == "Manage" ? "Manage" : "ReadOnly";
                return(PartialView("_EntitlementhistoryListTemplate", fields));

            case "leaveentitlements":
                fields = new List <UIField>
                {
                    UIField.GetField("Employee", "Employee"),
                    UIField.GetField("LeaveType", "Leave Type"),
                    UIField.GetField("LeaveTimePeriod", "Time Period"),
                    UIField.GetField("OperationType", "Operation"),
                    UIField.GetField("LeaveCount", "Leave Count"),
                    UIField.GetField("PreviousBalance", "Previous Balance"),
                    UIField.GetField("NewBalance", "New Balance"),
                    UIField.GetField("AllocatedBy", "Created By"),
                    UIField.GetField("CreatedOn", "Created On", UIFieldTypes.DateTime)
                };

                ViewBag.Mode = mode == "Manage" ? "Manage" : "ReadOnly";
                return(PartialView("_LeaveEntitlementsHistoryListTemplate", fields));

            case "entitlements":
                fields = new List <UIField>
                {
                    UIField.GetField("LeaveTimePeriod", "Leave Cycle"),
                    UIField.GetField("LeaveType", "Leave Type"),
                    UIField.GetField("Allocation", "Leave Balance"),
                };
                return(PartialView("_LeaveEntitlementsListTemplate", fields));

            case "leavebalance":
                fields = new List <UIField>
                {
                    UIField.GetField("User", "Name"),
                    UIField.GetField("EmployeeCode", "Code"),
                    UIField.GetField("Department", "Department"),
                    UIField.GetField("Designation", "Designation"),
                };
                return(PartialView("_HolidayListTemplate", fields));

            case "projects":
                ViewBag.UserId = WebUser.IsAdmin;
                bool isMember;
                var  employee = _employeeRepository.GetBy(u => u.UserId == WebUser.Id, "User,User.Person");
                isMember     = _projectMemberRepository.Any(m => m.EmployeeId == employee.Id && m.ProjectMemberRole.Role == MemberRole.ProjectManager) || WebUser.IsAdmin;
                ViewBag.Role = isMember;
                fields       = new List <UIField>
                {
                    UIField.GetField("Title"),
                    UIField.GetField("StatusType", "Status"),
                    UIField.GetField("ProjecttypeType", "Type"),
                    UIField.GetField("CreatedOn", "Created On", UIFieldTypes.DateTime)
                };
                ViewBag.Mode = mode == "Manage" ? "Manage" : "ReadOnly";
                return(PartialView("_ProjectListTemplate", fields));

            case "projectmembers":
                ViewBag.UserId = WebUser.IsAdmin;
                bool isProjectLead;
                var  user = _employeeRepository.GetBy(u => u.UserId == WebUser.Id, "User,User.Person,Location,Department,Designation,Shift");
                isProjectLead = _projectMemberRepository.Any(m => m.EmployeeId == user.Id && m.ProjectMemberRole.Role == MemberRole.ProjectManager) || WebUser.IsAdmin;
                ViewBag.Role  = isProjectLead;
                fields        = new List <UIField>
                {
                    UIField.GetField("MemberEmployee", "Employee"),
                    UIField.GetField("ProjectMemberRole", "Role"),
                };
                ViewBag.Mode = mode == "Manage" ? "Manage" : "ReadOnly";
                return(PartialView("_ProjectMembersListTemplate", fields));

            case "inactiveprojectmembers":
                ViewBag.UserId = WebUser.IsAdmin;
                bool isLead;
                var  userEmployee = _employeeRepository.GetBy(u => u.UserId == WebUser.Id, "User,User.Person,Location,Department,Designation,Shift");
                isLead       = _projectMemberRepository.Any(m => m.EmployeeId == userEmployee.Id && m.ProjectMemberRole.Role == MemberRole.ProjectManager) || WebUser.IsAdmin;
                ViewBag.Role = isLead;
                fields       = new List <UIField>
                {
                    UIField.GetField("MemberEmployee", "Employee"),
                    UIField.GetField("ProjectMemberRole", "Role"),
                };
                ViewBag.Mode = mode == "Manage" ? "Manage" : "ReadOnly";
                return(PartialView("_InactiveProjectMembersListTemplate", fields));

            case "tasks":
                ViewBag.UserId = WebUser.IsAdmin;
                bool isVisible;
                var  loginUser = _employeeRepository.GetBy(u => u.UserId == WebUser.Id, "User,User.Person");
                isVisible         = _projectMemberRepository.Any(m => m.EmployeeId == loginUser.Id && (m.ProjectMemberRole.Role == MemberRole.ProjectManager || m.ProjectMemberRole.Role == MemberRole.Lead)) || WebUser.IsAdmin;
                ViewBag.IsVisible = isVisible;
                fields            = new List <UIField>
                {
                    UIField.GetField("Title"),
                    UIField.GetField("Project", "Project"),
                    UIField.GetField("Assignee", "Assignee")
                };
                ViewBag.Mode = mode == "Manage" ? "Manage" : "ReadOnly";
                return(PartialView("_TaskListTemplate", fields));

            case "leadsources":
                fields = new List <UIField>
                {
                    UIField.GetField("Title"),
                    UIField.GetField("CreatedOn", "Created On", UIFieldTypes.DateTime)
                };
                ViewBag.Mode = mode == "Manage" ? "Manage" : "ReadOnly";
                return(PartialView("_ListTemplate", fields));

            case "leadstatuses":
                fields = new List <UIField>
                {
                    UIField.GetField("Name"),
                    UIField.GetField("CreatedOn", "Created On", UIFieldTypes.DateTime)
                };
                ViewBag.Mode = mode == "Manage" ? "Manage" : "ReadOnly";
                return(PartialView("_ListTemplate", fields));

            case "leadcategories":
                fields = new List <UIField>
                {
                    UIField.GetField("Title"),
                    UIField.GetField("CreatedOn", "Created On", UIFieldTypes.DateTime)
                };
                ViewBag.Mode = mode == "Manage" ? "Manage" : "ReadOnly";
                return(PartialView("_ListTemplate", fields));

            case "potentialcategories":
                fields = new List <UIField>
                {
                    UIField.GetField("Title"),
                    UIField.GetField("CreatedOn", "Created On", UIFieldTypes.DateTime)
                };
                ViewBag.Mode = mode == "Manage" ? "Manage" : "ReadOnly";
                return(PartialView("_ListTemplate", fields));

            case "salesstages":
                fields = new List <UIField>
                {
                    UIField.GetField("Name"),
                    UIField.GetField("CreatedOn", "Created On", UIFieldTypes.DateTime)
                };
                ViewBag.Mode = mode == "Manage" ? "Manage" : "ReadOnly";
                return(PartialView("_ListTemplate", fields));

            case "crmaccounts":
                fields = new List <UIField>
                {
                    UIField.GetField("Title"),
                    UIField.GetField("Industry", "Industry"),
                    UIField.GetField("Email", "Email"),
                    UIField.GetField("PhoneNo", "Phone No"),
                    UIField.GetField("CreatedOn", "Created On", UIFieldTypes.DateTime)
                };
                ViewBag.Mode = mode == "Manage" ? "Manage" : "ReadOnly";
                return(PartialView("_ListTemplate", fields));

            case "crmcontacts":
                fields = new List <UIField>
                {
                    UIField.GetField("Name", "Name"),
                    UIField.GetField("ParentAccount", "Account"),
                    UIField.GetField("PhoneNo", "Phone No"),
                    UIField.GetField("Email", "Email"),
                    UIField.GetField("CreatedOn", "Created On", UIFieldTypes.DateTime)
                };
                ViewBag.Mode = mode == "Manage" ? "Manage" : "ReadOnly";
                return(PartialView("_ListTemplate", fields));
            }

            ViewBag.Mode = mode == "Manage" ? "Manage" : "ReadOnly";
            return(PartialView("_Table", fields));
        }
예제 #4
0
 public void Check(IExtendedPrincipal user)
 {
     PermissionChecker.CheckPermission(user, this, null);
 }
예제 #5
0
 public static void CheckUserPermission(IPermission perm)
 {
     PermissionChecker.CheckPermission(CurrentUser, perm, null);
 }
예제 #6
0
        public IHttpActionResult Get(string type)
        {
            var entityType          = type.ToLower();
            IList <GridObject> data = null;
            int skip;
            int top;

            return(WrapIntoApiResult(() =>
            {
                switch (entityType)
                {
                case "vendor":
                    data = _dataContext.Vendors.OrderByDescending(i => i.CreatedOn).ToList().Select(h => new GridObject(h)).ToList();
                    break;

                case "project":
                    var projecttitle = HttpContext.Current.Request.QueryString["projecttitle"];
                    var projectStatus = HttpContext.Current.Request.QueryString["status"];
                    var clientid = HttpContext.Current.Request.QueryString["clientid"];
                    var projectType = HttpContext.Current.Request.QueryString["projecttype"];

                    IQueryable <Project> projectList = _dataContext.Projects.Include("Client.Person").Include("ParentProject");


                    if (!string.IsNullOrEmpty(projecttitle) && projecttitle != "undefined")
                    {
                        projectList = projectList.Where(i => i.Title.Contains(projecttitle));
                    }
                    if (!string.IsNullOrEmpty(clientid) && clientid != "undefined")
                    {
                        var client = Convert.ToInt32(clientid);
                        if (client != 0)
                        {
                            projectList = projectList.Where(i => i.ClientId == client);
                        }
                    }
                    if (!string.IsNullOrEmpty(projectType) && projectType != "undefined")
                    {
                        var typeProject = (ProjectType)Enum.Parse(typeof(ProjectType), projectType, true);
                        projectList = projectList.Where(i => i.ProjectType == typeProject);
                    }
                    if (!string.IsNullOrEmpty(projectStatus) && projectStatus != "undefined")
                    {
                        var statusType = (ProjectStatus)Enum.Parse(typeof(ProjectStatus), projectStatus, true);
                        projectList = projectList.Where(i => i.Status == statusType);
                    }
                    else
                    {
                        projectList = projectList.Where(i => i.Status != ProjectStatus.Closed && i.Status != ProjectStatus.Cancelled);
                    }

                    if (!WebUser.IsAdmin)
                    {
                        var currentEmployee = _dataContext.Employees.FirstOrDefault(l => l.UserId == WebUser.Id);
                        var projectMember = _dataContext.ProjectMembers.Where(l => l.EmployeeId == currentEmployee.Id).Select(m => m.ProjectId).Distinct().ToList();
                        projectList = projectList.Where(p => projectMember.Contains(p.Id) || p.IsPublic || p.CreatedByUserId == WebUser.Id);
                    }
                    var project = projectList.OrderByDescending(i => i.CreatedOn).ToList().Select(h => new ProjectModel(h)).ToList();
                    data = project.Select(h => new GridObject(h)).ToList();
                    break;

                case "projectmember":
                    var projectmember = HttpContext.Current.Request.QueryString["projectId"];

                    if (!string.IsNullOrEmpty(projectmember))
                    {
                        var projectId = Convert.ToInt32(projectmember);
                        if (projectId != 0)
                        {
                            var projectmembers = _dataContext.ProjectMembers.Include("MemberEmployee.User.Person").Include("Project").Include("ProjectMemberRole").Where(i => i.ProjectId == projectId);

                            var projects = projectmembers.Where(u => u.MemberStatus == MemberStatus.Active).OrderBy(i => i.MemberStatus).ToList().Select(h => new ProjectModel(h)).ToList();
                            data = projects.Select(h => new GridObject(h)).ToList();
                        }
                    }
                    break;

                case "inactiveprojectmember":
                    var inactiveProjectmember = HttpContext.Current.Request.QueryString["projectId"];

                    if (!string.IsNullOrEmpty(inactiveProjectmember))
                    {
                        var projectId = Convert.ToInt32(inactiveProjectmember);
                        if (projectId != 0)
                        {
                            var projectmembers = _dataContext.ProjectMembers.Include("MemberEmployee.User.Person").Include("Project").Include("ProjectMemberRole").Where(i => i.ProjectId == projectId);

                            var projects = projectmembers.Where(u => u.MemberStatus == MemberStatus.InActive).OrderBy(i => i.MemberStatus).ToList().Select(h => new ProjectModel(h)).ToList();
                            data = projects.Select(h => new GridObject(h)).ToList();
                        }
                    }
                    break;

                case "task":
                    var taskTitle = HttpContext.Current.Request.QueryString["title"];
                    var taskStatus = HttpContext.Current.Request.QueryString["status"];
                    var projectid = HttpContext.Current.Request.QueryString["projectid"];
                    var employeeid = HttpContext.Current.Request.QueryString["employeeid"];

                    IQueryable <Task> taskslists = _dataContext.Tasks.Include("Assignee.User.Person").Include("Project");

                    if (!string.IsNullOrEmpty(taskTitle) && taskTitle != "undefined")
                    {
                        taskslists = taskslists.Where(i => i.Title.Contains(taskTitle));
                    }
                    if (!string.IsNullOrEmpty(projectid) && projectid != "undefined")
                    {
                        var projects = Convert.ToInt32(projectid);
                        if (projects != 0)
                        {
                            taskslists = taskslists.Where(i => i.ProjectId == projects);
                        }
                    }
                    if (!string.IsNullOrEmpty(employeeid) && employeeid != "undefined")
                    {
                        var employees = Convert.ToInt32(employeeid);
                        if (employees != 0)
                        {
                            taskslists = taskslists.Where(i => i.AssigneeId == employees);
                        }
                    }
                    if (!string.IsNullOrEmpty(taskStatus) && taskStatus != "undefined")
                    {
                        var statusType = (ProjectTaskStatus)Enum.Parse(typeof(ProjectTaskStatus), taskStatus, true);
                        taskslists = taskslists.Where(i => i.TaskStatus == statusType);
                    }
                    if (!string.IsNullOrEmpty(taskStatus) && taskStatus != "undefined")
                    {
                        var statusType = (ProjectTaskStatus)Enum.Parse(typeof(ProjectTaskStatus), taskStatus, true);
                        taskslists = taskslists.Where(i => i.TaskStatus == statusType);
                    }
                    else
                    {
                        taskslists = taskslists.Where(p => !(p.TaskStatus == ProjectTaskStatus.Cancelled || p.TaskStatus == ProjectTaskStatus.Completed));
                    }
                    if (!WebUser.IsAdmin)
                    {
                        var currentEmployee = _dataContext.Employees.FirstOrDefault(l => l.UserId == WebUser.Id);
                        var projectMember = _dataContext.ProjectMembers.Where(l => l.EmployeeId == currentEmployee.Id).Select(m => m.ProjectId).Distinct().ToList();
                        taskslists = taskslists.Where(p => projectMember.Contains(p.ProjectId) || p.AssigneeId == currentEmployee.Id || p.CreatedByUserId == WebUser.Id && !(p.TaskStatus == ProjectTaskStatus.Cancelled || p.TaskStatus == ProjectTaskStatus.Completed));
                    }

                    var tasks = taskslists.OrderByDescending(i => i.CreatedOn).ToList().Select(h => new TaskModel(h)).ToList();
                    data = tasks.Select(h => new GridObject(h)).ToList();
                    break;

                case "holiday":
                    var leaveType = HttpContext.Current.Request.QueryString["leaveType"];
                    var year = HttpContext.Current.Request.QueryString["year"];

                    IQueryable <Holiday> query = _dataContext.Holidays;

                    if (!string.IsNullOrEmpty(leaveType) && leaveType != "undefined")
                    {
                        var holidayType = (HolidayType)Enum.Parse(typeof(HolidayType), leaveType, true);
                        query = query.Where(i => i.Type == holidayType);
                    }
                    if (!string.IsNullOrEmpty(year) && year != "undefined")
                    {
                        var years = Convert.ToInt32(year);
                        query = query.Where(i => i.Date.Year == years);
                    }
                    var model = query.OrderBy(i => i.Date).ToList().Select(h => new HolidayModel(h)).ToList();
                    data = model.Select(h => new GridObject(h)).ToList();
                    break;

                case "leavetimeperiod":
                    data = _dataContext.LeaveTimePeriods.OrderByDescending(i => i.CreatedOn).ToList().Select(h => new GridObject(h)).ToList();
                    break;

                case "leavetype":
                    data = _dataContext.LeaveTypes.OrderByDescending(i => i.CreatedOn).ToList().Select(h => new GridObject(h)).ToList();
                    break;

                case "entitlement":
                    var leaveEntitlement = HttpContext.Current.Request.QueryString["leaveEntitlement"];

                    if (!string.IsNullOrEmpty(leaveEntitlement))
                    {
                        var employeeId = Convert.ToInt32(leaveEntitlement);
                        if (employeeId != 0)
                        {
                            var leavePeriod = _dataContext.LeaveTimePeriods.Where(i => i.Start <= DateTime.UtcNow && i.End >= DateTime.UtcNow).FirstOrDefault();;
                            var entitlementData = _dataContext.LeaveEntitlements.Include("Employee").Include("Employee.User").Include("Employee.User.Person").Include("CreatedByUser.Person").Include("LeaveTimePeriod").Include("LeaveType").Where(i => i.EmployeeId == employeeId && i.LeaveTimePeriod.Id == leavePeriod.Id);
                            var entitlementUpdateList = entitlementData.OrderByDescending(i => i.CreatedOn).ToList().Select(h => new LeaveEntitlementModel(h)).ToList();
                            data = entitlementUpdateList.Select(h => new GridObject(h)).ToList();
                        }
                    }
                    break;

                case "leavebalance":
                    if (PermissionChecker.CheckPermission(WebUser.Permissions, 210))
                    {
                        var employeeLeave = HttpContext.Current.Request.QueryString["employeeId"];
                        var employeeDepartment = HttpContext.Current.Request.QueryString["employeeDepartment"];

                        IQueryable <Employee> employeeList = _dataContext.Employees.Include("User").Include("User.Person").Include("Department").Include("Designation");

                        if (!string.IsNullOrEmpty(employeeDepartment) && employeeDepartment != "undefined")
                        {
                            var departmentId = Convert.ToInt32(employeeDepartment);
                            if (departmentId != 0)
                            {
                                employeeList = employeeList.Where(i => i.DepartmentId == departmentId);
                            }
                        }
                        if (!string.IsNullOrEmpty(employeeLeave) && employeeLeave != "undefined")
                        {
                            var employeeId = Convert.ToInt32(employeeLeave);
                            if (employeeId != 0)
                            {
                                employeeList = employeeList.Where(i => i.Id == employeeId);
                            }
                        }

                        var employeeData = employeeList.Where(i => i.EmployeeStatus != EmployeeStatus.Ex && i.Id != 1).OrderBy(i => i.EmployeeCode).ToList().Select(h => new EmployeeModel(h)).ToList();
                        data = employeeData.Select(h => new GridObject(h)).ToList();
                    }
                    else
                    {
                        return new List <GridObject>();
                    }
                    break;

                case "leaveentitlement":
                    var employeeEntitlement = HttpContext.Current.Request.QueryString["employeeId"];
                    var leaveTypeEntitlement = HttpContext.Current.Request.QueryString["leaveTypeId"];
                    var leaveTimePeriod = HttpContext.Current.Request.QueryString["leaveTimePeriodId"];
                    var allocatedBy = HttpContext.Current.Request.QueryString["allocatedBy"];
                    var operation = HttpContext.Current.Request.QueryString["operation"];

                    IQueryable <LeaveEntitlementUpdate> entitlementList = _dataContext.LeaveEntitlementUpdates.Include("Employee.User.Person").Include("LeaveType").Include("LeaveTimePeriod").Include("CreatedByUser.Person");

                    if (!string.IsNullOrEmpty(employeeEntitlement) && employeeEntitlement != "undefined")
                    {
                        var employeeId = Convert.ToInt32(employeeEntitlement);
                        if (employeeId != 0)
                        {
                            entitlementList = entitlementList.Where(i => i.EmployeeId == employeeId);
                        }
                    }
                    if (!string.IsNullOrEmpty(leaveTypeEntitlement) && leaveTypeEntitlement != "undefined")
                    {
                        var leaveTypeId = Convert.ToInt32(leaveTypeEntitlement);
                        if (leaveTypeId != 0)
                        {
                            entitlementList = entitlementList.Where(i => i.LeaveTypeId == leaveTypeId);
                        }
                    }
                    if (!string.IsNullOrEmpty(leaveTimePeriod) && leaveTimePeriod != "undefined")
                    {
                        var leaveTimePeriodId = Convert.ToInt32(leaveTimePeriod);
                        if (leaveTimePeriodId != 0)
                        {
                            entitlementList = entitlementList.Where(i => i.LeaveTimePeriodId == leaveTimePeriodId);
                        }
                    }
                    if (!string.IsNullOrEmpty(allocatedBy) && allocatedBy != "undefined")
                    {
                        var AllocatedById = Convert.ToInt32(allocatedBy);
                        if (AllocatedById != 0)
                        {
                            entitlementList = entitlementList.Where(i => i.CreatedByUserId == AllocatedById);
                        }
                    }
                    if (!string.IsNullOrEmpty(operation) && operation != "undefined")
                    {
                        var statusType = (LeaveOperation)Enum.Parse(typeof(LeaveOperation), operation, true);
                        entitlementList = entitlementList.Where(i => i.Operation == statusType);
                    }
                    var leaveentitlement = entitlementList.OrderByDescending(i => i.CreatedOn).ToList().Select(h => new LeaveEntitlementModel(h)).ToList();
                    data = leaveentitlement.Select(h => new GridObject(h)).ToList();
                    break;

                case "entitlementhistorylist":
                    var entitlementhistory = HttpContext.Current.Request.QueryString["entitlementhistory"];

                    if (!string.IsNullOrEmpty(entitlementhistory))
                    {
                        var employeeId = Convert.ToInt32(entitlementhistory);
                        if (employeeId != 0)
                        {
                            var entitlementshistory = _dataContext.LeaveEntitlementUpdates.Include("Employee.User.Person").Include("LeaveType").Include("LeaveTimePeriod").Where(i => i.EmployeeId == employeeId);
                            var history = entitlementshistory.OrderByDescending(i => i.CreatedOn).ToList().Select(h => new LeaveEntitlementModel(h)).ToList();
                            data = history.Select(h => new GridObject(h)).ToList();
                        }
                    }
                    break;

                case "designation":
                    var department = HttpContext.Current.Request.QueryString["department"];
                    var band = HttpContext.Current.Request.QueryString["band"];


                    IQueryable <Designation> stringQuery = _dataContext.Designations;

                    if (!string.IsNullOrEmpty(department) && department != "undefined")
                    {
                        var departmentId = Convert.ToInt32(department);
                        if (departmentId != 0)
                        {
                            stringQuery = stringQuery.Where(i => i.DepartmentId == departmentId);
                        }
                    }

                    if (!string.IsNullOrEmpty(band) && band != "undefined")
                    {
                        var bandType = (Band)Enum.Parse(typeof(Band), band, true);
                        stringQuery = stringQuery.Where(i => i.Band == bandType);
                    }
                    var modelData = stringQuery.OrderBy(i => i.Department.Title).ThenBy(i => i.Title).ToList().Select(h => new DesignationModel(h)).ToList();
                    data = modelData.Select(h => new GridObject(h)).ToList();
                    break;

                case "department":
                    data = _dataContext.Departments.OrderBy(i => i.Title).ToList().Select(h => new GridObject(h)).ToList();
                    break;

                case "award":
                    data = _dataContext.Awards.OrderByDescending(i => i.CreatedOn).ToList().Select(h => new GridObject(h)).ToList();
                    break;

                case "role":
                    data = _dataContext.Roles.OrderByDescending(i => i.CreatedOn).ToList().Select(h => new GridObject(h)).ToList();
                    break;

                case "technologie":
                    data = _dataContext.Technologies.OrderByDescending(i => i.CreatedOn).ToList().Select(h => new GridObject(h)).ToList();
                    break;

                case "emailtemplate":
                    data = _dataContext.EmailTemplates.OrderByDescending(i => i.CreatedOn).ToList().Select(h => new GridObject(h)).ToList();
                    break;

                case "skill":
                    data = _dataContext.Skills.OrderByDescending(i => i.CreatedOn).ToList().Select(h => new GridObject(h)).ToList();
                    break;

                case "hobbie":
                    data = _dataContext.Hobbies.OrderByDescending(i => i.CreatedOn).ToList().Select(h => new GridObject(h)).ToList();
                    break;

                case "shift":
                    data = _dataContext.Shifts.OrderByDescending(i => i.CreatedOn).ToList().Select(h => new GridObject(h)).ToList();
                    break;

                case "certification":
                    data = _dataContext.Certifications.OrderByDescending(i => i.CreatedOn).ToList().Select(h => new GridObject(h)).ToList();
                    break;

                case "assetcategorie":
                    data = _dataContext.AssetCategories.OrderByDescending(i => i.CreatedOn).ToList().Select(h => new GridObject(h)).ToList();
                    break;

                case "software":
                    var software = _dataContext.Softwares.OrderByDescending(i => i.CreatedOn).ToList().Select(h => new SoftwareModel(h)).ToList();
                    data = software.Select(h => new GridObject(h)).ToList();
                    break;

                case "softwarecategorie":
                    data = _dataContext.SoftwareCategories.OrderByDescending(i => i.CreatedOn).ToList().Select(h => new GridObject(h)).ToList();
                    break;

                case "asset":
                    var departmentData = HttpContext.Current.Request.QueryString["departmentData"];
                    var category = HttpContext.Current.Request.QueryString["category"];
                    var vendor = HttpContext.Current.Request.QueryString["vendor"];
                    var userName = HttpContext.Current.Request.QueryString["userName"];
                    var assetState = HttpContext.Current.Request.QueryString["assetState"];
                    var tagNumber = HttpContext.Current.Request.QueryString["tagNumber"];
                    var serialNumber = HttpContext.Current.Request.QueryString["serialNumber"];
                    var modelNumber = HttpContext.Current.Request.QueryString["modelNumber"];
                    var title = HttpContext.Current.Request.QueryString["title"];

                    IQueryable <Asset> assetList = _dataContext.Assets.Include("AllocatedEmployee.User.Person").Include("Department");

                    if (!string.IsNullOrEmpty(departmentData) && departmentData != "undefined")
                    {
                        var departmentId = Convert.ToInt32(departmentData);
                        if (departmentId != 0)
                        {
                            assetList = assetList.Where(i => i.DepartmentId == departmentId);
                        }
                    }
                    if (!string.IsNullOrEmpty(vendor) && vendor != "undefined")
                    {
                        var vendorId = Convert.ToInt32(vendor);
                        if (vendorId != 0)
                        {
                            assetList = assetList.Where(i => i.VendorId == vendorId);
                        }
                    }
                    if (!string.IsNullOrEmpty(category) && category != "undefined")
                    {
                        var categoryId = Convert.ToInt32(category);
                        if (categoryId != 0)
                        {
                            assetList = assetList.Where(i => i.AssetCategoryId == categoryId);
                        }
                    }
                    if (!string.IsNullOrEmpty(assetState) && assetState != "undefined")
                    {
                        var state = (AssetState)Enum.Parse(typeof(AssetState), assetState, true);
                        assetList = assetList.Where(i => i.State == state);
                    }

                    if (!string.IsNullOrEmpty(userName) && userName != "undefined")
                    {
                        var userId = Convert.ToInt32(userName);
                        if (userId != 0)
                        {
                            assetList = assetList.Where(i => i.AllocatedEmployeeId == userId);
                        }
                    }
                    if (!string.IsNullOrEmpty(tagNumber) && tagNumber != "undefined")
                    {
                        assetList = assetList.Where(i => i.TagNumber.Contains(tagNumber));
                    }
                    if (!string.IsNullOrEmpty(serialNumber) && serialNumber != "undefined")
                    {
                        assetList = assetList.Where(i => i.SerialNumber.Contains(serialNumber));
                    }
                    if (!string.IsNullOrEmpty(modelNumber) && modelNumber != "undefined")
                    {
                        assetList = assetList.Where(i => i.ModelNumber.Contains(modelNumber));
                    }
                    if (!string.IsNullOrEmpty(title) && title != "undefined")
                    {
                        assetList = assetList.Where(i => i.Title.Contains(title));
                    }
                    var asset = assetList.OrderBy(i => i.TagNumber).ToList().Select(h => new AssetModel(h)).ToList();

                    data = asset.Select(h => new GridObject(h)).ToList();
                    break;

                case "employeeassets":
                    var employeeasset = HttpContext.Current.Request.QueryString["employeeasset"];

                    if (!string.IsNullOrEmpty(employeeasset))
                    {
                        var employeeId = Convert.ToInt32(employeeasset);
                        if (employeeId != 0)
                        {
                            var assetEmploye = _dataContext.Assets.Include("AllocatedEmployee.User.Person").Include("Department").Include("AssetCategory").Where(i => i.AllocatedEmployeeId == employeeId);

                            var assetData = assetEmploye.OrderByDescending(i => i.CreatedOn).ToList().Select(h => new AssetModel(h)).ToList();
                            data = assetData.Select(h => new GridObject(h)).ToList();
                        }
                    }
                    break;

                case "assetallocationhistory":
                    var assethistory = HttpContext.Current.Request.QueryString["assethistory"];
                    if (!string.IsNullOrEmpty(assethistory))
                    {
                        var assetId = Convert.ToInt32(assethistory);
                        if (assetId != 0)
                        {
                            var allocationList = _dataContext.AssetAllocations.Include("AllocatedEmployee.User.Person").Where(i => i.AssetId == assetId);

                            var allocationListData = allocationList.OrderByDescending(i => i.CreatedOn).ToList().Select(h => new AssetModel(h)).ToList();
                            data = allocationListData.Select(h => new GridObject(h)).ToList();
                        }
                    }
                    break;

                case "location":
                    data = _dataContext.Locations.OrderByDescending(i => i.CreatedOn).ToList().Select(h => new GridObject(h)).ToList();
                    break;

                case "requirementcategorie":
                    data = _dataContext.RequirementCategories.OrderByDescending(i => i.CreatedOn).ToList().Select(h => new GridObject(h)).ToList();
                    break;

                case "ticketcategorie":
                    data = _dataContext.TicketCategories.OrderByDescending(i => i.CreatedOn).ToList().Select(h => new GridObject(h)).ToList();
                    break;

                case "ticketsubcategorie":
                    data = _dataContext.TicketSubCategories.OrderByDescending(i => i.CreatedOn).ToList().Select(h => new GridObject(h)).ToList();
                    break;

                case "employee":
                    if (PermissionChecker.CheckPermission(WebUser.Permissions, 210))
                    {
                        var employeeDepartment = HttpContext.Current.Request.QueryString["employeeDepartment"];
                        var employeeCode = HttpContext.Current.Request.QueryString["employeeCode"];
                        var employeeLocation = HttpContext.Current.Request.QueryString["employeeLocation"];
                        var employeeDesignation = HttpContext.Current.Request.QueryString["employeeDesignation"];
                        var employeeShift = HttpContext.Current.Request.QueryString["employeeShift"];
                        var employeeName = HttpContext.Current.Request.QueryString["employeeName"];
                        var employeeStatus = HttpContext.Current.Request.QueryString["employeeStatus"];

                        IQueryable <Employee> employeeList =
                            _dataContext.Employees.Include("User")
                            .Include("User.Person")
                            .Include("Department")
                            .Include("Designation");

                        if (!string.IsNullOrEmpty(employeeDepartment) && employeeDepartment != "undefined")
                        {
                            var departmentId = Convert.ToInt32(employeeDepartment);
                            if (departmentId != 0)
                            {
                                employeeList = employeeList.Where(i => i.DepartmentId == departmentId);
                            }
                        }
                        if (!string.IsNullOrEmpty(employeeLocation) && employeeLocation != "undefined")
                        {
                            var locationId = Convert.ToInt32(employeeLocation);
                            if (locationId != 0)
                            {
                                employeeList = employeeList.Where(i => i.LocationId == locationId);
                            }
                        }
                        if (!string.IsNullOrEmpty(employeeDesignation) && employeeDesignation != "undefined")
                        {
                            var designationId = Convert.ToInt32(employeeDesignation);
                            if (designationId != 0)
                            {
                                employeeList = employeeList.Where(i => i.DesignationId == designationId);
                            }
                        }
                        if (!string.IsNullOrEmpty(employeeShift) && employeeShift != "undefined")
                        {
                            var shiftId = Convert.ToInt32(employeeShift);
                            if (shiftId != 0)
                            {
                                employeeList = employeeList.Where(i => i.ShiftId == shiftId);
                            }
                        }
                        if (!string.IsNullOrEmpty(employeeName) && employeeName != "undefined")
                        {
                            var employeeId = Convert.ToInt32(employeeName);
                            if (employeeId != 0)
                            {
                                employeeList = employeeList.Where(i => i.Id == employeeId);
                            }
                        }
                        if (!string.IsNullOrEmpty(employeeCode) && employeeCode != "undefined")
                        {
                            employeeList = employeeList.Where(i => i.EmployeeCode.Contains(employeeCode));
                        }
                        if (!string.IsNullOrEmpty(employeeStatus) && employeeStatus != "undefined")
                        {
                            var statusType =
                                (EmployeeStatus)Enum.Parse(typeof(EmployeeStatus), employeeStatus, true);
                            employeeList = employeeList.Where(i => i.EmployeeStatus == statusType && i.Id != 1);
                        }
                        else
                        {
                            // Default filter to active employees only
                            employeeList =
                                employeeList.Where(i => i.EmployeeStatus != EmployeeStatus.Ex && i.Id != 1);
                        }

                        var employeeData =
                            employeeList.OrderByDescending(i => i.Id)
                            .ToList()
                            .Select(h => new EmployeeModel(h))
                            .ToList();
                        data = employeeData.Select(h => new GridObject(h)).ToList();
                    }
                    else
                    {
                        return new List <GridObject>();
                    }

                    break;

                case "leaves":
                    TeamType teamType = TeamType.Me;
                    var employee = HttpContext.Current.Request.QueryString["employee"];
                    var leave = HttpContext.Current.Request.QueryString["leave"];
                    var duration = HttpContext.Current.Request.QueryString["duration"];
                    var status = HttpContext.Current.Request.QueryString["status"];
                    var startDate = HttpContext.Current.Request.QueryString["startDate"];
                    var approver = HttpContext.Current.Request.QueryString["approver"];
                    var team = HttpContext.Current.Request.QueryString["team"];

                    IQueryable <Leave> queryString = _dataContext.Leaves.Include("RequestedForUser.User.Person").Include("Approver.User.Person").Include("LeaveType");

                    if (!string.IsNullOrEmpty(team) && team != "undefined")
                    {
                        teamType = (TeamType)Enum.Parse(typeof(TeamType), team, true);
                    }
                    if (!string.IsNullOrEmpty(employee) && employee != "undefined")
                    {
                        var employeeId = Convert.ToInt32(employee);
                        if (employeeId != 0)
                        {
                            queryString = queryString.Where(i => i.RequestedForUserId == employeeId);
                        }
                    }
                    if (!string.IsNullOrEmpty(leave) && leave != "undefined")
                    {
                        var leaveTypeId = Convert.ToInt32(leave);
                        if (leaveTypeId != 0)
                        {
                            queryString = queryString.Where(i => i.LeaveTypeId == leaveTypeId);
                        }
                    }

                    if (!string.IsNullOrEmpty(duration) && duration != "undefined")
                    {
                        var durations = (LeaveDuration)Enum.Parse(typeof(LeaveDuration), duration, true);
                        queryString = queryString.Where(i => i.Duration == durations);
                    }

                    if (!string.IsNullOrEmpty(status) && status != "undefined")
                    {
                        var leavestatus = (LeaveStatus)Enum.Parse(typeof(LeaveStatus), status, true);
                        queryString = queryString.Where(i => i.Status == leavestatus);
                    }
                    if (!string.IsNullOrEmpty(startDate) && startDate != "undefined")
                    {
                        var startDateTime = Convert.ToDateTime(startDate);
                        queryString = queryString.Where(i => i.Start == startDateTime);
                    }

                    if (!string.IsNullOrEmpty(approver) && approver != "undefined")
                    {
                        var approverId = Convert.ToInt32(approver);
                        if (approverId != 0)
                        {
                            queryString = queryString.Where(i => i.ApproverId == approverId);
                        }
                    }
                    if (WebUser.Permissions.Contains(215))
                    {
                        if (teamType == TeamType.Me)
                        {
                            var currentEmployee = _dataContext.Employees.FirstOrDefault(l => l.UserId == WebUser.Id);
                            queryString = queryString.Where(l => l.RequestedForUserId == currentEmployee.Id);
                        }
                    }
                    else
                    {
                        var currentEmployee = _dataContext.Employees.FirstOrDefault(l => l.UserId == WebUser.Id);
                        if (teamType == TeamType.TeamMembers)
                        {
                            var myReportees = _dataContext.Employees.Where(l => l.ReportingPersonId == currentEmployee.Id).Select(i => i.Id).ToList();
                            queryString = queryString.Where(i => myReportees.Contains(i.RequestedForUserId.Value));
                        }
                        else
                        {
                            queryString = queryString.Where(l => l.RequestedForUserId == currentEmployee.Id);
                        }
                    }
                    var leaves = queryString.OrderByDescending(i => i.CreatedOn).ToList().Select(h => new LeaveModel(h)).ToList();
                    data = leaves.Select(h => new GridObject(h)).ToList();
                    break;

                case "employeedependent":
                    var employeeDependent = HttpContext.Current.Request.QueryString["employeeDependent"];

                    if (!string.IsNullOrEmpty(employeeDependent))
                    {
                        var employeeId = Convert.ToInt32(employeeDependent);
                        if (employeeId != 0)
                        {
                            var dependent = _dataContext.EmployeeDependents.Include("Employee.User.Person").Where(i => i.EmployeeId == employeeId);

                            var dependentData = dependent.OrderByDescending(i => i.CreatedOn).ToList().Select(h => new EmployeeDependentmodel(h)).ToList();
                            data = dependentData.Select(h => new GridObject(h)).ToList();
                        }
                    }
                    break;

                case "emergencycontact":
                    var emergencyContact = HttpContext.Current.Request.QueryString["emergencyContact"];

                    if (!string.IsNullOrEmpty(emergencyContact))
                    {
                        var employeeId = Convert.ToInt32(emergencyContact);
                        if (employeeId != 0)
                        {
                            var contact = _dataContext.EmergencyContacts.Include("Employee").Where(i => i.EmployeeId == employeeId);

                            var contactPerson = contact.OrderByDescending(i => i.CreatedOn).ToList().Select(h => new EmergencyContactModel(h)).ToList();
                            data = contactPerson.Select(h => new GridObject(h)).ToList();
                        }
                    }
                    break;

                case "crmleadsource":
                    data = _dataContext.CRMLeadSources.OrderByDescending(i => i.CreatedOn).ToList().Select(h => new GridObject(h)).ToList();
                    break;

                case "crmleadstatu":
                    data = _dataContext.CRMLeadStatuses.OrderByDescending(i => i.CreatedOn).ToList().Select(h => new GridObject(h)).ToList();
                    break;

                case "crmleadcategorie":
                    data = _dataContext.CRMLeadCategories.OrderByDescending(i => i.CreatedOn).ToList().Select(h => new GridObject(h)).ToList();
                    break;

                case "crmpotentialcategorie":
                    data = _dataContext.CRMPotentialCategories.OrderByDescending(i => i.CreatedOn).ToList().Select(h => new GridObject(h)).ToList();
                    break;

                case "crmsalesstage":
                    data = _dataContext.CRMSalesStages.OrderByDescending(i => i.CreatedOn).ToList().Select(h => new GridObject(h)).ToList();
                    break;

                case "crmaccount":
                    var crmaccount = _dataContext.CRMAccounts.OrderByDescending(i => i.CreatedOn).ToList().Select(h => new CRMAccountModel(h)).ToList();
                    data = crmaccount.Select(h => new GridObject(h)).ToList();
                    break;

                case "crmcontact":
                    var account = HttpContext.Current.Request.QueryString["account"];

                    IQueryable <CRMContact> crmContactQuery = _dataContext.CRMContacts.Include("Person").Include("ParentAccount");

                    if (!string.IsNullOrEmpty(account) && account != "undefined")
                    {
                        var accountId = Convert.ToInt32(account);
                        if (accountId != 0)
                        {
                            crmContactQuery = crmContactQuery.Where(i => i.ParentAccountId == accountId);
                        }
                    }
                    var contactData = crmContactQuery.OrderByDescending(i => i.CreatedOn).ToList().Select(h => new CRMContactModel(h)).ToList();
                    data = contactData.Select(h => new GridObject(h)).ToList();
                    break;

                case "projectmemberrole":
                    var memberrole = _dataContext.ProjectMemberRoles.Include("Department").OrderByDescending(i => i.CreatedOn).ToList().Select(h => new ProjectMemberRoleModel(h)).ToList();
                    data = memberrole.Select(h => new GridObject(h)).ToList();
                    break;
                }

                skip = !string.IsNullOrEmpty(HttpContext.Current.Request.QueryString["skip"]) ? Convert.ToInt32(HttpContext.Current.Request.QueryString["skip"]) : 0;
                top = !string.IsNullOrEmpty(HttpContext.Current.Request.QueryString["top"]) ? Convert.ToInt32(HttpContext.Current.Request.QueryString["top"]) : 0;

                if (skip > 0 || top > 0)
                {
                    var enumerable = data.Skip(skip).Take(top);
                    return enumerable.ToList();
                }

                return data;
            }));
        }
예제 #7
0
        public ActionResult MyTeam(TimeSheetSearchViewModel vm)
        {
            // Get only mine and my reportees

            var loginEmployee = _employeeRepository.GetBy(r => r.UserId == WebUser.Id);
            var myReportees   = _employeeRepository.GetAllBy(u => u.ReportingPersonId == loginEmployee.Id && u.EmployeeStatus != EmployeeStatus.Ex).Select(u => u.UserId).ToList();
            var userList      = _userRepository.GetAllBy(u => myReportees.Contains(u.Id) || u.Id == WebUser.Id, "Person").ToList();

            ViewBag.SubmittedUserById = new SelectList(userList, "Id", "Person.Name", vm.SubmittedUserById);

            var myProjects          = _projectMemberRepository.GetAllBy(m => m.EmployeeId == loginEmployee.Id && m.MemberStatus == MemberStatus.Active, "Project").Select(m => m.Project).ToList();
            var getOnlyOpenProjects = myProjects.Where(p => !(p.Status == ProjectStatus.Cancelled || p.Status == ProjectStatus.Closed)).OrderBy(o => o.Title).ToList();

            ViewBag.ProjectId = new SelectList(getOnlyOpenProjects, "Id", "Title", vm.ProjectId);


            if (WebUser.IsAdmin || PermissionChecker.CheckPermission(WebUser.Permissions, 210))
            {
                ViewBag.SubmittedUserById = new SelectList(_userRepository.GetAllBy(u => u.Id != 1, "Person").ToList().OrderBy(p => p.Person.Name), "Id", "Person.Name", vm.SubmittedUserById);
            }



            Func <IQueryable <TimeSheet>, IQueryable <TimeSheet> > timeSheetFilter = q =>
            {
                q = q.Include("CreatedByUser.Person");

                if (vm.SubmittedUserById.HasValue)
                {
                    q = q.Where(r => r.CreatedByUserId == vm.SubmittedUserById.Value);
                }

                if (vm.State.HasValue)
                {
                    q = q.Where(r => r.State == vm.State.Value);
                }

                if (vm.StartDate.HasValue)
                {
                    q = q.Where(r => r.Date >= vm.StartDate.Value);
                }
                else
                {
                    if (!vm.IsPostBack)
                    {
                        if (DateTime.Today.DayOfWeek == DayOfWeek.Monday)
                        {
                            vm.StartDate = DateTime.Today;
                            q            = q.Where(r => r.Date >= vm.StartDate.Value);
                        }
                        else
                        {
                            var monday = DateTime.Today.Previous(DayOfWeek.Monday);
                            vm.StartDate = monday;
                            q            = q.Where(r => r.Date >= vm.StartDate.Value);
                        }
                    }
                }

                if (vm.EndDate.HasValue)
                {
                    q = q.Where(r => r.Date <= vm.EndDate.Value);
                }
                else
                {
                    if (!vm.IsPostBack)
                    {
                        if (DateTime.Today.DayOfWeek == DayOfWeek.Friday)
                        {
                            vm.EndDate = DateTime.Today;
                            q          = q.Where(r => r.Date <= vm.EndDate.Value);
                        }
                        else
                        {
                            var friday = DateTime.Today.Next(DayOfWeek.Friday);
                            vm.EndDate    = friday;
                            q             = q.Where(r => r.Date <= vm.EndDate.Value);
                            vm.IsPostBack = true;
                        }
                    }
                }
                if (WebUser.IsAdmin || PermissionChecker.CheckPermission(WebUser.Permissions, 210))
                {
                    var user         = _userRepository.GetAllBy(u => u.Id != 1, "Person").ToList();
                    var usersListIds = user.Select(u => u.Id).ToList();
                    q = q.Where(r => usersListIds.Contains(r.CreatedByUserId));
                }
                else
                {
                    var userListIds = userList.Select(u => u.Id).ToList();
                    q = q.Where(r => userListIds.Contains(r.CreatedByUserId));
                }

                q = q.OrderByDescending(d => d.CreatedOn);
                return(q);
            };

            vm.TimeSheets = _timeSheetRepository.Search(timeSheetFilter).ToList().Select(u => new TimeSheetViewModel(u, WebUser)).ToList();

            return(vm.IsCalendarMode ? View("MyTeamCalendar", vm) : View(vm));
        }
예제 #8
0
        public FileContentResult EffortByProjectCSV(TimeSheetSearchViewModel vm)
        {
            Func <IQueryable <TimeSheetLineItem>, IQueryable <TimeSheetLineItem> > timeSheetLineItemFilter = q =>
            {
                q = q.Include("TimeSheet").Include("Project");

                if (vm.SubmittedUserById.HasValue)
                {
                    q = q.Where(r => r.TimeSheet.CreatedByUserId == vm.SubmittedUserById.Value);
                }

                if (vm.State.HasValue)
                {
                    q = q.Where(r => r.TimeSheet.State == vm.State.Value);
                }

                if (vm.StartDate.HasValue)
                {
                    q = q.Where(r => r.TimeSheet.Date >= vm.StartDate.Value);
                }

                if (vm.EndDate.HasValue)
                {
                    q = q.Where(r => r.TimeSheet.Date <= vm.EndDate.Value);
                }

                if (vm.TeamMode)
                {
                    var teamMembers = new List <int>();

                    if (WebUser.IsAdmin || PermissionChecker.CheckPermission(WebUser.Permissions, 210))
                    {
                        teamMembers.AddRange(_userRepository.GetAll().Select(u => u.Id).ToList());
                    }
                    else
                    {
                        var loginEmployee = _employeeRepository.GetBy(r => r.UserId == WebUser.Id);
                        var myReportees   = _employeeRepository.GetAllBy(u => u.ReportingPersonId == loginEmployee.Id && u.EmployeeStatus != EmployeeStatus.Ex).Select(u => u.UserId).ToList();
                        var userList      = _userRepository.GetAllBy(u => myReportees.Contains(u.Id) || u.Id == WebUser.Id, "Person").Select(u => u.Id).ToList();
                        teamMembers.AddRange(userList);
                    }

                    q = q.Where(r => teamMembers.Contains(r.TimeSheet.CreatedByUserId));
                }

                return(q);
            };

            var csv = new StringBuilder();
            var employeesByLocation = _timeSheetLineItemRepository.Search(timeSheetLineItemFilter).GroupBy(l => l.Project.Title)
                                      .Select(x => new
            {
                x.Key,
                Value = x.Sum(i => i.Effort)
            })
                                      .ToList();

            var keys = string.Join(",", employeesByLocation.Select(x => x.Key).ToArray());

            csv.AppendLine(keys);
            var values = string.Join(",", employeesByLocation.Select(x => x.Value).ToArray());

            csv.AppendLine(values);
            return(File(new UTF8Encoding().GetBytes(csv.ToString()), "text/csv", "EmployeesByLocationCSV.csv"));
        }
예제 #9
0
        public FileContentResult EffortByBillableProjectsCSV(TimeSheetSearchViewModel vm)
        {
            Func <IQueryable <TimeSheetLineItem>, IQueryable <TimeSheetLineItem> > timeSheetLineItemFilter = q =>
            {
                q = q.Include("TimeSheet.CreatedByUser");

                if (vm.SubmittedUserById.HasValue)
                {
                    q = q.Where(r => r.TimeSheet.CreatedByUserId == vm.SubmittedUserById.Value);
                }

                if (vm.State.HasValue)
                {
                    q = q.Where(r => r.TimeSheet.State == vm.State.Value);
                }

                if (vm.StartDate.HasValue)
                {
                    q = q.Where(r => r.TimeSheet.Date >= vm.StartDate.Value);
                }

                if (vm.EndDate.HasValue)
                {
                    q = q.Where(r => r.TimeSheet.Date <= vm.EndDate.Value);
                }
                if (vm.ProjectId.HasValue)
                {
                    q = q.Where(r => r.ProjectId == vm.ProjectId);
                }

                if (vm.TeamMode)
                {
                    var teamMembers = new List <int>();
                    if (WebUser.IsAdmin || PermissionChecker.CheckPermission(WebUser.Permissions, 210))
                    {
                        teamMembers.AddRange(_userRepository.GetAll().Select(u => u.Id).ToList());
                    }
                    else
                    {
                        var loginEmployee = _employeeRepository.GetBy(r => r.UserId == WebUser.Id);
                        var myReportees   = _employeeRepository.GetAllBy(u => u.ReportingPersonId == loginEmployee.Id).Select(u => u.UserId).ToList();
                        var userList      = _userRepository.GetAllBy(u => myReportees.Contains(u.Id) || u.Id == WebUser.Id, "Person").Select(u => u.Id).ToList();
                        teamMembers.AddRange(userList);
                    }
                    q = q.Where(r => teamMembers.Contains(r.TimeSheet.CreatedByUserId));
                }

                return(q);
            };

            var csv = new StringBuilder();
            var billableByProjects = _timeSheetLineItemRepository.Search(timeSheetLineItemFilter).GroupBy(l => l.WorkType)
                                     .Select(x => new
            {
                x.Key,
                workType = (x.Key == 1 ? "Billable" : "Non-Billable"),
                Value    = x.Sum(i => i.Effort)
            })
                                     .ToList();


            var keys = string.Join(",", billableByProjects.Select(x => x.workType).ToArray());

            csv.AppendLine(keys);
            var values = string.Join(",", billableByProjects.Select(x => x.Value).ToArray());

            csv.AppendLine(values);
            return(File(new UTF8Encoding().GetBytes(csv.ToString()), "text/csv", "BillableByProjectTypeCSV.csv"));

            // Bad, we are getting numbers. So I put the name instead
            //csv.AppendLine("Billable,Non-Billable");
            //csv.AppendLine(  "Billable,Non-Billable");
            //var values = string.Join(",", billableByProjects.Select(x => x.Value).ToArray());
            //csv.AppendLine(values);
        }
예제 #10
0
        public ActionResult Details(int id)
        {
            var timeSheet = _timeSheetRepository.Get(id, "ApprovedByEmployee.User.Person");

            if (timeSheet == null)
            {
                return(HttpNotFound());
            }

            var loginEmployee = _employeeRepository.GetBy(r => r.UserId == WebUser.Id);
            var myReportees   = _employeeRepository.GetAllBy(u => u.ReportingPersonId == loginEmployee.Id && u.EmployeeStatus != EmployeeStatus.Ex).Select(u => u.UserId).ToList();
            var userList      = _userRepository.GetAllBy(u => myReportees.Contains(u.Id), "Person").Select(u => u.Id).ToList();

            if (timeSheet.CreatedByUserId == WebUser.Id || userList.Contains(timeSheet.CreatedByUserId) || WebUser.IsAdmin || PermissionChecker.CheckPermission(WebUser.Permissions, 210))
            {
                var timeSheetRows = _timeSheetLineItemRepository.GetAllBy(l => l.TimeSheetId == timeSheet.Id, "Project");
                var activities    = _timeSheetActivityRepository.GetAllBy(l => l.TimeSheetId == timeSheet.Id, o => o.OrderByDescending(t => t.CreatedOn));

                var viewModel = new TimeSheetViewModel(timeSheet, WebUser)
                {
                    LineItems           = timeSheetRows.ToList(),
                    TimeSheetActivities = activities.ToList()
                };

                // Is the Person a Manager, then only show the Approval Screen.

                var timeSheetUser     = _userRepository.Get(timeSheet.CreatedByUserId, "ReportingPerson");
                var timesheetEmployee = _employeeRepository.GetBy(u => u.UserId == timeSheetUser.Id);
                var employee          = _employeeRepository.GetBy(r => r.UserId == WebUser.Id);
                viewModel.IsApprover = timeSheetUser != null && timesheetEmployee.ReportingPersonId == employee.Id;

                return(View(viewModel));
            }
            else
            {
                return(new RedirectToRouteResult(new RouteValueDictionary
                {
                    { "controller", "Error" },
                    { "action", "NotAuthorized" },
                    { "area", "" }
                }));
            }
        }