public void setSource(FacilityBookingRequest fbr)
        {
            _details.Clear();
            List<FacilityBookingRequestDetails> temp = fbr.RequestDetails.ToList<FacilityBookingRequestDetails>(); ;
            int confirmedLocationIdx = 0;
            if (fbr.Status == BookingStatus.Approved)
            {
                FacilityBookingsHelper client = new FacilityBookingsHelper();
                confirmedLocationIdx = client.GetConfirmedBooking(fbr.RequestID).RequestDetailID;
                client.Close();
            }

            for (int i = 0; i < temp.Count; i++)
            {
                BookingDetail bd = new BookingDetail();
                bd.FacilityID = temp[i].FacilityID;
                bd.Faculty = temp[i].Faculty;
                bd.Priority = temp[i].Priority;

                if ((fbr.Status == BookingStatus.Approved) && (temp[i].RequestDetailsID == confirmedLocationIdx))
                {
                    bd.Balance = 1;
                }
                _details.Add(bd);
            }

            lv.ItemsSource = _details;
        }
예제 #2
0
        public static List<FacilityBookingRequestDetails> GetBookingRequestDetails(FacilityBookingRequest fbr)
        {
            DAL dalDataContext = new DAL();
            List<FacilityBookingRequestDetails> requestDetails;

            requestDetails = (from facBookingDetails in dalDataContext.facBookReqsDetails
                              where facBookingDetails.Requestid == fbr.RequestID
                              && facBookingDetails.EventID == fbr.EventID
                              orderby facBookingDetails.Priority ascending
                              select facBookingDetails).ToList<FacilityBookingRequestDetails>();

            return requestDetails;
        }
예제 #3
0
        public FacilityBookingConfirmed(FacilityBookingRequest fbr, 
            FacilityBookingRequestDetails fbrd, string remarks, string purpose)
        {
            this.eventID = fbr.EventID;
            this.requestid = fbr.RequestID;
            this.RequestorID = fbr.RequestorID;

            this.Faculty = fbrd.Faculty;
            this.facilityID = fbrd.FacilityID;

            this.requestDetailID = fbrd.RequestDetailsID;

            this.requestStartDateTime = fbr.RequestStartDateTime;
            this.requestEndDateTime = fbr.RequestEndDateTime;

            this.remarks = remarks;
            this.purpose = purpose;
        }
예제 #4
0
        public static void UpdateFacilityRequestStatus(FacilityBookingRequest request, BookingStatus status, string remarks)
        {
            DAL dalDataContext = new DAL();
            FacilityBookingRequest existingRequest =
                (from facBookings in dalDataContext.facBookReqs
                 where facBookings.EventID == request.EventID &&
                 facBookings.RequestID == request.RequestID
                 select facBookings).FirstOrDefault<FacilityBookingRequest>();

            existingRequest.Status = status;
            existingRequest.Remarks = remarks;
            dalDataContext.SubmitChanges();
        }
예제 #5
0
        public static void dropConfirmedBookingRequest(FacilityBookingRequest fbr, string remarks)
        {
            DAL dalDataContext = new DAL();
            FacilityBookingConfirmed fbc =
                (from confirmedBookings in dalDataContext.facConfirmedBookings
                 where confirmedBookings.EventID == fbr.EventID &&
                 confirmedBookings.RequestID == fbr.RequestID &&
                 confirmedBookings.RequestorID == fbr.RequestorID
                 select confirmedBookings).FirstOrDefault<FacilityBookingConfirmed>();

            dalDataContext.facConfirmedBookings.DeleteOnSubmit(fbc);
            dalDataContext.SubmitChanges();
        }
예제 #6
0
        public static bool AddBookingRequest(User sender, EventDay evntDay, DateTime reqStart,
            DateTime reqEnd, Faculties fac, List<FacilityBookingRequestDetails> reqDetails)
        {
            if (sender.isFacilityAdmin ||
                sender.isAuthorized(EventController.GetEvent(evntDay.EventID),
                EnumFunctions.Manage_Facility_Bookings))//, EnumFunctions.ManageFacBookings))
            {
                bool success;
                try
                {
                    //request start > evnt.StartDateTime do not check, can book earlier...
                    if (reqStart.AddHours(2) < evntDay.StartDateTime)
                    {
                        throw new FaultException<SException>(new SException(),
                      new FaultReason("You cannot book a facility more than 2hours before your event start time"));
                    }

                    if (reqEnd.AddHours(-2) > evntDay.EndDateTime)
                    {
                        throw new FaultException<SException>(new SException(),
                      new FaultReason("You cannot book a facility for more than 2 hours after your event end time"));
                    }

                    if (reqEnd.Date != reqStart.Date)
                    {
                        if (reqEnd.Date == reqStart.Date.AddDays(1) && reqEnd.Hour == 0 && reqEnd.Minute == 0 && reqEnd.Second == 0)
                        {
                            reqEnd = reqEnd.AddSeconds(-1);
                        }
                        else
                        {
                            throw new FaultException<SException>(new SException(),
                                new FaultReason("You cannot book a across multiple days"));
                        }
                    }

                    DAL dalDataContext = new DAL();
                    Table<FacilityBookingRequest> facReq = dalDataContext.facBookReqs;
                    using (TransactionScope tScope = new TransactionScope(TransactionScopeOption.Required))
                    {
                        FacilityBookingRequest f = new FacilityBookingRequest(evntDay.EventID,
                            sender.UserID, reqStart, reqEnd, fac);
                        facReq.InsertOnSubmit(f);
                        facReq.Context.SubmitChanges();

                        f = (from req in dalDataContext.facBookReqs
                             where req.EventID == evntDay.EventID &&
                             req.RequestorID == sender.UserID
                             orderby req.BookingTime descending
                             select req).FirstOrDefault<FacilityBookingRequest>();

                        success = FaciReqDetailsController.AddFacilityBookingReqDetails(f.RequestID, reqDetails);
                        tScope.Complete();
                    }
                }
                catch (Exception ex)
                {
                    throw new FaultException<SException>(new SException(),
                      new FaultReason("An Error occured While Adding Booking Request: " + ex.Message));
                }
                if (success)
                {

                    string msg = sender.Name + " has sent you a facility booking request for "
                                    + EventController.GetEvent(evntDay.EventID).Name +
                                     Environment.NewLine + Environment.NewLine +
                                    " Please check the Facility Requests for more details.";

                    string title = "New Facility Booking Request";
                    string facAdmin = SysRoleController.GetFacilityAdmin(fac);

                    NotificationController.sendNotification(sender.UserID, facAdmin, title, msg);
                }
                return success;
            }
            else
            {
                throw new FaultException<SException>(new SException(),
                    new FaultReason("User is not authorized to add a facility booking request!"));
            }
        }
 public static List<FacilityBookingRequestDetails> GetBookingRequestDetails(FacilityBookingRequest fbr)
 {
     return FaciReqDetailsController.GetBookingRequestDetails(fbr);
 }