コード例 #1
0
        private void SaveAssignment()
        {
            CheckInputIsValid();

            _apt.BeginUpdate();
            _apt.Location   = txtNote.Text;
            _apt.ResourceId = (chkResources.EditValue as WIN.SCHEDULING_APPLICATION.DOMAIN.Booking.BookingResource).Id;

            _apt.Start = this.dtpIn.DateTime.Date;
            _apt.End   = this.dtpOut.DateTime.Date;


            BookingResource res = chkResources.EditValue as WIN.SCHEDULING_APPLICATION.DOMAIN.Booking.BookingResource;
            BedType         bed = cboLetti.EditValue as WIN.SCHEDULING_APPLICATION.DOMAIN.Booking.BedType;

            _apt.CustomFields["Resource"] = res;
            _apt.CustomFields["Booking"]  = _parentBooking;
            _apt.CustomFields["BedType"]  = bed;

            if (_isCreationOp)
            {
                _control.Storage.Appointments.Add(_apt);
            }
            _apt.EndUpdate();
        }
コード例 #2
0
        public BookingResource CreateBooking(BookingResource booking, int flightId, int passengerId)
        {
            var existingFlight    = _flightRepository.Get(flightId);
            var existingPassenger = _personRepository.Get(passengerId);

            if (existingFlight == null || existingPassenger == null)
            {
                return(null);
            }

            var newId = (_bookingRepository.GetAll().Max(b => b.Id)) + 1;

            var bookingToSave = _mapper.Map <BookingResource, Booking>(booking);

            bookingToSave.Flight     = existingFlight;
            bookingToSave.Passengers = new List <Person> {
                existingPassenger
            };
            bookingToSave.Id = newId;

            _bookingRepository.Save(bookingToSave);

            var savedBooking = _bookingRepository.Get(newId);

            return(_mapper.Map <Booking, BookingResource>(savedBooking));
        }
コード例 #3
0
        public async Task <IActionResult> GetBookingByIdAsync(
            Guid bookingId,
            CancellationToken ct)
        {
            var userId = await _userService.GetUserIdAsync(User);

            if (userId == null)
            {
                return(NotFound());
            }

            BookingResource booking = null;

            if (await _authzService.AuthorizeAsync(User, "ViewAllBookingsPolicy"))
            {
                booking = await _bookingService.GetBookingAsync(bookingId, ct);
            }
            else
            {
                booking = await _bookingService.GetBookingForUserIdAsync(bookingId, userId.Value, ct);
            }

            if (booking == null)
            {
                return(NotFound());
            }

            return(Ok(booking));
        }
コード例 #4
0
        public BookingResource DeleteBooking(int Id)
        {
            Booking         dbBooking = service.DeleteBooking(Id);
            BookingResource b         = new BookingResource().CopyPropertiesFrom(dbBooking);

            b.PersonResource = GetPersonResFromBooking(dbBooking);
            return(b);
        }
コード例 #5
0
        public BookingResource AddBooking(BookingDTO dto)
        {
            Booking         toAdd     = new Booking().CopyPropertiesFrom(dto);
            Booking         dbBooking = service.AddBooking(toAdd);
            BookingResource b         = new BookingResource().CopyPropertiesFrom(dbBooking);

            b.PersonResource = GetPersonResFromBooking(dbBooking);
            return(b);
        }
コード例 #6
0
 public List <BookingResource> GetBoookings()
 {
     return(service.GetBookings()
            .Select(x => {
         BookingResource b = new BookingResource().CopyPropertiesFrom(x);
         b.PersonResource = GetPersonResFromBooking(x);
         return b;
     })
            .ToList());
 }
コード例 #7
0
        public FreeRoomCheck IsRoomFree(DateTime start, DateTime end, BookingResource room, int assignmentID)
        {
            if (end <= start)
            {
                throw new Exception("Intervallo date non corretto per la verifica di assegnazioni già presenti");
            }

            if (room == null)
            {
                throw new Exception("Stanza non specificata per la verifica di assegnazioni già presenti");
            }


            end   = end.Date;
            start = start.Date;

            //cerco tutte le assegnazioni per una data camera che intersecano strettamente il periodo considerato
            //cosi facendo ottengo tutte le assegnazioni che si sovrappongono ad una potenziale assegnazione nel periodo
            //considerato.

            //l'input assignmentId serve per il caso in cui sto aggiornando una assegnazione esistente e il check
            //va fatto non considerando la presenza dell'assegnazione in questione
            Query q = _ps.CreateNewQuery("MapperAssignment");

            CompositeCriteria c = new CompositeCriteria(AbstractBoolCriteria.Operatore.AndOp);

            //criterio per la verifica della sovrapposizioe delle assegnazioni
            c.AddCriteria(Criteria.DateRangeStrictlyIntersects("StartDate", "EndDate", start, end, DataAccessServices.Instance().PersistenceFacade.DBType));
            //criterio sulla camera
            c.AddCriteria(Criteria.Equal("Id_Resource", room.Id.ToString()));

            //in caso di modifica
            if (assignmentID > 0)
            {
                NotExp exp = new NotExp(Criteria.Equal("ID", assignmentID.ToString()));
                c.AddCriteria(exp);
            }

            q.AddWhereClause(c);


            string p       = q.CreateQuery(_ps);
            IList  results = q.Execute(_ps);

            FreeRoomCheck cc = new FreeRoomCheck();

            cc.IsFree = results.Count == 0;

            if (cc.IsFree)
            {
                return(cc);
            }

            return(ConstructObject(results, cc, start, end, room));
        }
コード例 #8
0
        public AppointmentTypeBuilder WithOptionalResource(BookingResource resource)
        {
            if (_optionalResources is null)
            {
                _optionalResources = new List <BookingResource>();
            }

            _optionalResources.Add(resource);

            return(this);
        }
コード例 #9
0
        public ElementBuilder WithBookingResource(BookingResource value)
        {
            if (_property.OptionalResources == null)
            {
                _property.OptionalResources = new List <BookingResource>();
            }

            _property.OptionalResources.Add(value);

            return(this);
        }
コード例 #10
0
        public BookingResource UpdateBooking(int Id, BookingDTO dto)
        {
            Booking toEdit = new Booking().CopyPropertiesFrom(dto);

            toEdit.Id = Id;
            Booking         dbBooking = service.UpdateBooking(toEdit);
            BookingResource b         = new BookingResource().CopyPropertiesFrom(dbBooking);

            b.PersonResource = GetPersonResFromBooking(dbBooking);
            return(b);
        }
コード例 #11
0
        public ActionResult Post([FromBody] BookingResource booking, [FromQuery] int?flightId, [FromQuery] int?passengerId)
        {
            if (booking == null || flightId == null || passengerId == null)
            {
                return(BadRequest());
            }

            var createdBooking = _bookingService.CreateBooking(booking, (int)flightId, (int)passengerId);

            return(CreatedAtAction("Get", new { id = createdBooking.Id }, createdBooking));
        }
コード例 #12
0
        private string ConstructMessage(string message1, ArrayList listOffreeDays, BookingResource room)
        {
            string message2 = string.Format("La stanza {0} non è disponibile nei giorni seguenti: {1}", room.Descrizione, Environment.NewLine);

            StringBuilder bb = new StringBuilder();

            foreach (DateTime item in listOffreeDays)
            {
                bb.AppendLine(item.ToShortDateString());
            }

            return(string.Format("{0}{1}{2}", message1, message2, bb.ToString()));
        }
コード例 #13
0
        private void schedulerStorage1_AppointmentChanging(object sender, PersistentObjectCancelEventArgs e)
        {
            try
            {
                Nested_CheckSecurityForChanging();

                //qui verifico che l'appuntamento può essere cambiato
                Appointment app = e.Object as Appointment;

                BookingResourceHandler bc  = new BookingResourceHandler();
                BookingResource        res = bc.GetElementById(app.ResourceId.ToString()) as BookingResource;

                Assignment ass = app.GetSourceObject(schedulerStorage1) as Assignment;

                AssignmentHandler hh = new AssignmentHandler();

                FreeRoomCheck cc = hh.IsRoomFree(app.Start, app.End, res, ass.Id);
                if (!cc.IsFree)
                {
                    XtraMessageBox.Show(cc.Message, "Attenzione", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    e.Cancel = true;
                }


                //if (XtraMessageBox.Show("Il prezzo verra' cambiato di conseguenza. Continuare?", "Domanda", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes)
                //{
                //    e.Cancel = true;
                //    return;
                //}

                //Appointment app1 = e.Object as Appointment;
                //Assignment aas1 = app1.GetSourceObject(schedulerStorage1) as Assignment;

                //if (aas1.Booking.Confirmed)
                //{


                //    aas1.Booking.Payment.Total = aas1.Booking.Payment.Total + 10;
                //}
            }
            catch (AccessDeniedException)
            {
                ErrorHandler.Show("Impossibile accedere alla funzionalità richiesta. Accesso negato");
                e.Cancel = true;
            }
            catch (Exception ex)
            {
                ErrorHandler.Show(ex);
                e.Cancel = true;
            }
        }
コード例 #14
0
        public void CreateBookingReturnsNull()
        {
            var fakeBooking = new BookingResource {
                Id = 1, Number = "XYZ"
            };

            var mockedMapper            = GetMockedMapper();
            var mockedPersonRepository  = GetMockedPersonRepository();
            var mockedBookingRepository = GetMockedBookingRepository();
            var mockedFlightRepository  = GetMockedFlightRepository();

            var bookingService = new BookingService(mockedBookingRepository.Object,
                                                    mockedFlightRepository.Object,
                                                    mockedPersonRepository.Object,
                                                    mockedMapper.Object);

            var result = bookingService.CreateBooking(fakeBooking, nonExistingFlightId, nonExistingPassengerId);

            Assert.Null(result);
        }
コード例 #15
0
        private FreeRoomCheck ConstructObject(IList results, FreeRoomCheck cc, DateTime start, DateTime end, BookingResource room)
        {
            string message1 = string.Format("La camera {0} risulta occupata nel periodo dal {1} al {2}{3}", room.Descrizione, start.ToShortDateString(), end.ToShortDateString(), Environment.NewLine);

            DateTime[] listOfDays     = GetIntervalListOfDays(start, end);
            ArrayList  listOffreeDays = new ArrayList();


            foreach (DateTime item in listOfDays)
            {
                if (IsFreeDay(results, item))
                {
                    listOffreeDays.Add(item);
                }
            }

            if (listOffreeDays.Count == 0)
            {
                cc.Message = message1;
            }
            else
            {
                cc.Message = ConstructMessage(message1, listOffreeDays, room);
            }

            return(cc);
        }