public static bool CheckAccessRight(SchedulerPage page, IClient currentUser) { var pageName = Path.GetFileName(page.AppRelativeVirtualPath).ToLower(); if (pageName.StartsWith("admin")) { // Only administrator can see the admin related pages return(currentUser.HasPriv(ClientPrivilege.Administrator)); } else { switch (pageName) { case "resourcedocs.aspx": case "resourceconfig.aspx": case "resourcemaintenance.aspx": var resourceId = page.ContextBase.Request.SelectedPath().ResourceID; if (resourceId > 0) { ClientAuthLevel authLevel = CacheManager.Current.GetAuthLevel(resourceId, currentUser); // So far, only Tool Engineer can see the 3 pages return((authLevel & ClientAuthLevel.ToolEngineer) > 0); } break; default: return(true); } } return(false); }
public static string[] SelectEmailsByAuth(int resourceId, ClientAuthLevel auth) { return(ServiceProvider.Current.Scheduler.Resource .GetResourceClients(resourceId, authLevel: auth) .Where(x => !x.IsEveryone()) .Select(x => x.Email) .ToArray()); }
public static IEnumerable <string> AuthLevelText(ClientAuthLevel level) { foreach (Enum value in Enum.GetValues(typeof(ClientAuthLevel))) { if (level.HasFlag(value)) { yield return(Enum.GetName(typeof(ClientAuthLevel), value)); } } }
private bool CanCreateNewReservation(HttpContextBase context) { var currentView = context.GetCurrentViewType(); // copied from the old EmptyCell_Click event handler in ReservationView.ascx.vb if (currentView == ViewType.UserView) { return(false); } DateTime date = context.Request.SelectedDate(); TimeSpan time = GetReservationTime(context); // Check for past reservation date times if (date.Add(time) < DateTime.Now) { throw new Exception("You cannot create reservations in the past."); } // Check if user has accounts if (GetCurrentUserActiveClientAccountsCount(context) == 0) { throw new Exception("You do not have any accounts with which to make reservations."); } // The reservation fence cannot truly be checked until the activity type is selected // however, authorized users are always impacted by it/ var pathInfo = context.Request.SelectedPath(); IResource res = Provider.Scheduler.Resource.GetResource(pathInfo.ResourceID); IClient currentUser = context.CurrentUser(Provider); ClientAuthLevel authLevel = CacheManager.Current.GetAuthLevel(res.ResourceID, currentUser); if (authLevel < ClientAuthLevel.SuperUser) { if (DateTime.Now.AddMinutes(res.ReservFence) < date) { throw new Exception("You are trying to make a reservation that is too far in the future."); } } if (currentView == ViewType.DayView || currentView == ViewType.WeekView) { context.SetWeekStartDate(GetWeekStartDate(context)); } return(true); }
public static IEnumerable <IActivity> AuthorizedActivities(this ICache c, ClientAuthLevel authLevel) { //procActivitySelect @Action = 'SelectAuthorizedActivities' //SELECT ActivityID, ActivityName, ListOrder, Chargeable, Editable, AccountType, UserAuth, InviteeType, InviteeAuth, // StartEndAuth, NoReservFenceAuth, NoMaxSchedAuth, [Description], IsActive, IsFacilityDownTime //FROM Activity //WHERE UserAuth &@UserAuth > 0 // AND Editable = 1 AND IsActive = 1 // AND IsFacilityDownTime = 0--This keeps the Facility Down Time activity out of the select when making reservations. Staff should use the link at the top of the page instead. //ORDER BY ListOrder var result = c.Activities().Where(x => x.IsActive && (x.UserAuth & authLevel) > 0 && x.Editable && !x.IsFacilityDownTime).OrderBy(x => x.ListOrder).ToList(); return(result); }
public ReservationStateArgs(int reservationId, bool inlab, bool isReserver, bool isInvited, bool isAuthorized, bool isRepair, bool isFacilityDownTime, int minCancelTime, int minReservTime, DateTime beginDateTime, DateTime endDateTime, DateTime?actualBeginDateTime, DateTime?actualEndDateTime, ClientAuthLevel userAuth) { ReservationID = reservationId; IsInLab = inlab; IsReserver = isReserver; IsInvited = isInvited; IsAuthorized = isAuthorized; IsRepair = isRepair; IsFacilityDownTime = isFacilityDownTime; MinCancelTime = minCancelTime; MinReservTime = minReservTime; BeginDateTime = beginDateTime; EndDateTime = endDateTime; ActualBeginDateTime = actualBeginDateTime; ActualEndDateTime = actualEndDateTime; UserAuth = userAuth; }
protected virtual IList <TabItem> GetTabs() { ClientAuthLevel authLevel = CacheManager.Current.GetAuthLevel(PathInfo.Parse(SelectedPath).ResourceID, CurrentUser); bool authorized = (authLevel & ClientAuthLevel.ToolEngineer) > 0; List <TabItem> tabs = new List <TabItem> { new TabItem() { CssClass = GetTabCssClass(0), NavigateUrl = VirtualPathUtility.ToAbsolute(string.Format("~/ResourceDayWeek.aspx?TabIndex=0&Path={0}&Date={1:yyyy-MM-dd}", SelectedPath, ContextBase.Request.SelectedDate())), Text = "Day", Visible = true }, new TabItem() { CssClass = GetTabCssClass(1), NavigateUrl = VirtualPathUtility.ToAbsolute(string.Format("~/ResourceDayWeek.aspx?TabIndex=1&Path={0}&Date={1:yyyy-MM-dd}", SelectedPath, ContextBase.Request.SelectedDate())), Text = "Week", Visible = true }, new TabItem() { CssClass = GetTabCssClass(2), NavigateUrl = VirtualPathUtility.ToAbsolute(string.Format("~/ResourceClients.aspx?Path={0}&Date={1:yyyy-MM-dd}", SelectedPath, ContextBase.Request.SelectedDate())), Text = "Clients", Visible = true }, new TabItem() { CssClass = GetTabCssClass(3), NavigateUrl = VirtualPathUtility.ToAbsolute(string.Format("~/ResourceContact.aspx?Path={0}&Date={1:yyyy-MM-dd}", SelectedPath, ContextBase.Request.SelectedDate())), Text = "Helpdesk", Visible = true }, new TabItem() { CssClass = GetTabCssClass(4), NavigateUrl = VirtualPathUtility.ToAbsolute(string.Format("~/ResourceConfig.aspx?Path={0}&Date={1:yyyy-MM-dd}", SelectedPath, ContextBase.Request.SelectedDate())), Text = "Configuration", Visible = authorized }, new TabItem() { CssClass = GetTabCssClass(5), NavigateUrl = VirtualPathUtility.ToAbsolute(string.Format("~/ResourceMaintenance.aspx?Path={0}&Date={1:yyyy-MM-dd}", SelectedPath, ContextBase.Request.SelectedDate())), Text = "Repair", Visible = authorized }, new TabItem() { CssClass = GetTabCssClass(6), NavigateUrl = VirtualPathUtility.ToAbsolute(string.Format("~/ResourceDocs.aspx?Path={0}&Date={1:yyyy-MM-dd}", SelectedPath, ContextBase.Request.SelectedDate())), Text = "Docs", Visible = authorized } }; return(tabs); }
protected override void Load() { ID = Item.ResourceID; Name = Resources.CleanResourceName(Item.ResourceName); Description = Item.ResourceDescription; IsSchedulable = Item.IsSchedulable; State = Item.State; StateNotes = Item.StateNotes; RepairEndDateTime = null; RepairNotes = string.Empty; AuthLevel = Item.AuthLevel; EveryoneAuthLevel = Item.EveryoneAuthLevel; EffectiveAuthLevel = Item.EffectiveAuthLevel; if (State == ResourceState.Online && !IsSchedulable) { RepairInProgress repair = Reservations.GetRepairInProgress(Item); if (repair != null) { RepairEndDateTime = repair.EndDateTime; RepairNotes = repair.Notes; } } }
private void Fill(ClientAuthLevel authLevel) { if ((authLevel & ClientAuthLevel.ToolEngineer) > 0) { FillToolEngineers(); } if ((authLevel & ClientAuthLevel.Trainer) > 0) { FillTrainers(); } if ((authLevel & ClientAuthLevel.SuperUser) > 0) { FillSuperUsers(); } if ((authLevel & ClientAuthLevel.AuthorizedUser) > 0) { FillAuthorizedUsers(); } FillEmailList(); }
public IEnumerable <IResourceClient> GetActiveResourceClients(int resourceId = 0, int clientId = 0, ClientAuthLevel authLevel = 0) { throw new NotImplementedException(); }
public static bool HasAuth(ClientAuthLevel auth1, ClientAuthLevel auth2) => (auth1 & auth2) > 0;
public static IEnumerable <IResourceClient> SelectByResource(int resourceId, ClientAuthLevel authLevel) { return(ServiceProvider.Current.Scheduler.Resource .GetResourceClients(resourceId, authLevel: authLevel) .Where(x => x.ClientActive).ToList()); }
public static IQueryable <ResourceClientInfo> SelectResourceClients(this ISession session, int resourceId = 0, int clientId = 0, ClientAuthLevel authLevel = 0) { var query = session.Query <ResourceClientInfo>(); if (resourceId > 0) { query = query.Where(x => x.ResourceID == resourceId); } if (clientId > 0) { query = query.Where(x => x.ClientID == clientId || x.ClientID == -1); } if (authLevel > 0) { query = query.Where(x => (x.AuthLevel & authLevel) > 0); } return(query); }
public bool HasAuth(ClientAuthLevel auths) => LNF.Scheduler.ResourceClients.HasAuth(AuthLevel, auths);
protected void SubmitButton_Command(object sender, CommandEventArgs e) { ShowErrorMessage(string.Empty); try { int clientId; var selectedAuthLevel = GetSelectedAuthLevel(); var resourceId = GetCurrentResource().ResourceID; ClientAuthLevel refreshAuthLevel = selectedAuthLevel; if (e.CommandName == "Authorize") { clientId = int.Parse(ClientsDropDownList.SelectedValue); var rc = new ResourceClient() { ResourceID = resourceId, ClientID = clientId, AuthLevel = selectedAuthLevel, Expiration = null, EmailNotify = null, PracticeResEmailNotify = null }; SetExpiration(rc); DataSession.Insert(rc); ClearResourceClientsCache(); var lname = string.Empty; var fname = string.Empty; var splitter = ClientsDropDownList.SelectedItem.Text.Split(','); if (splitter.Length > 0) { lname = splitter[0].Trim(); } if (splitter.Length > 1) { fname = splitter[1].Trim(); } CurrentClients.Add(new ResourceClientItem() { ResourceClientID = rc.ResourceClientID, ClientID = clientId, AuthLevel = selectedAuthLevel, LName = lname, FName = fname, Expiration = rc.Expiration, ContactUrl = GetContactUrl(clientId), AuthDuration = GetCurrentResource().AuthDuration, Email = GetEmailAddress(clientId) }); } else if (e.CommandName == "Modify") { clientId = int.Parse(ClientIdHiddenField.Value); var cc = CurrentClients.FirstOrDefault(x => x.ClientID == clientId); if (cc != null) { refreshAuthLevel |= cc.AuthLevel; var rc = DataSession.Single <ResourceClient>(cc.ResourceClientID); rc.AuthLevel = selectedAuthLevel; SetExpiration(rc); DataSession.SaveOrUpdate(rc); ClearResourceClientsCache(); cc.AuthLevel = selectedAuthLevel; cc.Expiration = rc.Expiration; CancelEdit(); } } Fill(refreshAuthLevel); FillClients(); } catch (Exception ex) { ShowErrorMessage(ex.Message); } }
private void SetHyperLinkNavigateUrl(HyperLink hyp, ClientAuthLevel authLevel) { hyp.NavigateUrl = $"~/Contact.aspx?Privs={(int)authLevel}&Path={ContextBase.Request.SelectedPath()}&Date={ContextBase.Request.SelectedDate():yyyy-MM-dd}"; }
public ReservationState GetReservationCell(CustomTableCell rsvCell, IReservationItem rsv, ReservationClient client, IEnumerable <IReservationProcessInfo> reservationProcessInfos, IEnumerable <IReservationInviteeItem> invitees, LocationPathInfo locationPath, ViewType view, DateTime now) { int reservationId = rsv.ReservationID; int resourceId = rsv.ResourceID; // Reservation State var args = ReservationStateArgs.Create(rsv, client, now); var state = ReservationStateUtility.Create(now).GetReservationState(args); // Tooltip Caption and Text string caption = Reservations.GetReservationCaption(state); string toolTip = Reservations.Create(Provider, now).GetReservationToolTip(rsv, state, reservationProcessInfos, invitees); rsvCell.Attributes["data-tooltip"] = toolTip; rsvCell.Attributes["data-caption"] = caption; // Remove the create reservation link if it was added. if (rsvCell.Controls.Count > 0) { rsvCell.Controls.Clear(); } // BackGround color and cursor - set by CSS rsvCell.CssClass = state.ToString(); var div = new HtmlGenericControl("div"); div.Attributes.Add("class", "reservation-container"); var cellText = rsv.DisplayName; if (rsv.RecurrenceID.GetValueOrDefault(-1) > 0) { cellText += " [R]"; } // Reservation Text Literal litReserver = new Literal { Text = $"<div class=\"cell-text\">{cellText}</div>" }; div.Controls.Add(litReserver); // Delete Button // 2/11/05 - GPR: allow tool engineers to cancel any non-started, non-repair reservation in the future ClientAuthLevel userAuth = args.UserAuth; PathInfo path = PathInfo.Create(rsv.BuildingID, rsv.LabID, rsv.ProcessTechID, rsv.ResourceID); string navurl; //if (state == ReservationState.Editable || state == ReservationState.StartOrDelete || state == ReservationState.StartOnly || (userAuth == ClientAuthLevel.ToolEngineer && DateTime.Now < rsv.BeginDateTime && rsv.ActualBeginDateTime == null && state != ReservationState.Repair)) // [2020-09-18 jg] StartOnly should not allow delete and NotInLab should allow delete if (CanDeleteReservation(state, args, now)) { navurl = UrlUtility.GetDeleteReservationUrl(rsv.ReservationID, rsvCell.CellDate, state, view); var hypDelete = new HyperLink { NavigateUrl = NavigateUrl(navurl, path, locationPath), ImageUrl = "~/images/deleteGrid.gif", CssClass = "ReservDelete" }; hypDelete.Attributes["data-tooltip"] = "Click to cancel reservation"; hypDelete.Attributes["data-caption"] = "Cancel this reservation"; div.Controls.Add(hypDelete); rsvCell.HorizontalAlign = HorizontalAlign.Left; rsvCell.VerticalAlign = VerticalAlign.Top; } // 2011/04/03 Modify button // [2020-09-18 jg] StartOnly should not allow modification (also NotInLab should not allow modification) //if (state == ReservationState.Editable || state == ReservationState.StartOrDelete || state == ReservationState.StartOnly) if (CanModifyReservation(state, args, now)) { navurl = UrlUtility.GetModifyReservationUrl(rsv.ReservationID, rsvCell.CellDate, state, view); var hypModify = new HyperLink { NavigateUrl = NavigateUrl(navurl, path, locationPath), ImageUrl = "~/images/edit.png", CssClass = "ReservModify" }; hypModify.Attributes["data-tooltip"] = "Click to modify reservation"; hypModify.Attributes["data-caption"] = "Modify this reservation"; div.Controls.Add(hypModify); rsvCell.HorizontalAlign = HorizontalAlign.Left; rsvCell.VerticalAlign = VerticalAlign.Top; } rsvCell.Controls.Add(div); return(state); }
public IResourceActivityAuth AddResourceActivityAuth(int resourceId, int activityId, ClientAuthLevel userAuth, ClientAuthLevel inviteeAuth, ClientAuthLevel startEndAuth, ClientAuthLevel noReservFenceAuth, ClientAuthLevel noMaxSchedAuth) { var rauth = new ResourceActivityAuth { ResourceID = resourceId, ActivityID = activityId, UserAuth = userAuth, InviteeAuth = inviteeAuth, StartEndAuth = startEndAuth, NoReservFenceAuth = noReservFenceAuth, NoMaxSchedAuth = noMaxSchedAuth }; Session.Save(rauth); return(rauth); }
public IEnumerable <IResourceClient> GetActiveResourceClients(int resourceId = 0, int clientId = 0, ClientAuthLevel authLevel = 0) { return(Session.SelectResourceClients(resourceId, clientId, authLevel) .Where(x => x.Expiration == null || x.Expiration.Value > DateTime.Now) .ToList()); }
public IEnumerable <IResourceClient> GetResourceClients(int resourceId = 0, int clientId = 0, ClientAuthLevel authLevel = 0) { return(Session.SelectResourceClients(resourceId, clientId, authLevel).ToList()); }
public virtual bool HasAuth(ClientAuthLevel auths) => ResourceClients.HasAuth(AuthLevel, auths);
public IResourceActivityAuth AddResourceActivityAuth(int resourceId, int activityId, ClientAuthLevel userAuth, ClientAuthLevel inviteeAuth, ClientAuthLevel startEndAuth, ClientAuthLevel noReservFenceAuth, ClientAuthLevel noMaxSchedAuth) { throw new NotImplementedException(); }