예제 #1
0
        public string GetAllReservations()
        {
            var result   = String.Empty;
            var request  = new GetAllReservationRequest();
            var response = new GetAllReservationResponse();

            ClaimsIdentity identity       = (ClaimsIdentity)User.Identity;
            var            isInternalUser = Convert.ToBoolean(identity.Claims.Where(x => x.Type == "IsInternalUser").First().Value);
            int            userID         = Int32.Parse(identity.Claims.Where(x => x.Type == "UserID").First().Value);

            try
            {
                request.IsInternalUser = isInternalUser;
                request.UserID         = userID;

                ReservationService service = new ReservationService();
                response = service.PerformGetAllReservations(request);
            }
            catch (Exception ex)
            {
                response = new GetAllReservationResponse()
                {
                    MessageString   = ex.Message,
                    MessageStatusID = (byte)EMessageStatus.Exception
                };
                result = JsonConvert.SerializeObject(response);
                return(result);
            }

            result = JsonConvert.SerializeObject(response);
            return(result);
        }
        public GetAllReservationResponse PerformGetAllReservations(GetAllReservationRequest request)
        {
            GetAllReservationResponse response = new GetAllReservationResponse();

            try
            {
                using (var db = new CuddlyWombatEntities())
                {
                    db.Configuration.LazyLoadingEnabled   = false;
                    db.Configuration.ProxyCreationEnabled = false;

                    var allReservations = new List <Reservation>();

                    if (request.IsInternalUser)
                    {
                        allReservations = (from r in db.Reservations.Include("ReservationStatu").Include("Customer")
                                           where r.ReservationStatusID != (byte)EReservationStatus.Canceled
                                           orderby r.ReservationDate
                                           select r).ToList();
                    }
                    else
                    {
                        var customer = (from c in db.Customers
                                        where c.CustomerID == request.UserID
                                        select c).FirstOrDefault();
                        if (customer != null)
                        {
                            allReservations = (from r in db.Reservations.Include("ReservationStatu").Include("Customer")
                                               where r.CustomerID == customer.CustomerID && r.ReservationStatusID != (byte)EReservationStatus.Canceled
                                               orderby r.ReservationDate
                                               select r).ToList();
                        }
                        else
                        {
                            response = new GetAllReservationResponse()
                            {
                                MessageString   = "Please contact system admin",
                                MessageStatusID = (byte)EMessageStatus.Fail
                            };
                        }
                    }
                    foreach (var re in allReservations)
                    {
                        re.Customer.Reservations         = null;
                        re.Customer.Password             = null;
                        re.ReservationStatu.Reservations = null;
                    }
                    response.Reservations = allReservations;

                    var averageCapacityOfTable = (from t in db.Tables
                                                  where t.IsAvailable == true
                                                  select t.Capacity).Average();

                    response.AverageCapacityOfTable = (int)averageCapacityOfTable;
                }
            }
            catch (Exception ex)
            {
                response.MessageStatusID = (byte)EMessageStatus.Exception;
                response.MessageString   = ex.Message;
            }

            return(response);
        }