Ejemplo n.º 1
0
        public override decimal RegisterOutPut(ControlInputsOutputsEntity controlInputsOutputs)
        {
            AmountEntity oAmount = unitOfWork
                                   .AmountRepository
                                   .LastOrDefault(g => g.VehicleType.Equals((int)VehicleType.VIP));

            if (oAmount == null)
            {
                throw new BusinessExeption(string.Format(GeneralMessages.AmountNotFound, VehicleType.VIP.GetDisplayName()));
            }


            VehicleEntity oVehicle = unitOfWork.
                                     VehicleRepository.
                                     FirstOrDefault(g => g.VehiclePlate.ToUpper().Equals(controlInputsOutputs.VehiclePlate.ToUpper()) &&
                                                    g.VehicleType.Equals((int)VehicleType.VIP));

            if (oVehicle == null)
            {
                throw new BusinessExeption(string.Format(GeneralMessages.VehicleAndTypeVehicleNotFound,
                                                         controlInputsOutputs.VehiclePlate.ToUpper(),
                                                         VehicleType.VIP.GetDisplayName()));
            }

            controlInputsOutputs.DepartureTime      = DateTime.Now;
            controlInputsOutputs.TotalMinutesOfStay = (decimal)(DateTime.Now - controlInputsOutputs.EntryTime).TotalMinutes;
            unitOfWork.ControlInputsOutputsRepository.Update(controlInputsOutputs);

            oVehicle.TotalMinutesOfStay += controlInputsOutputs.TotalMinutesOfStay;
            oVehicle.ModificationDate    = DateTime.Now;
            oVehicle.ModificationUser    = UsersParkingLot.System;
            unitOfWork.VehicleRepository.Update(oVehicle);

            return(controlInputsOutputs.TotalMinutesOfStay * oAmount.Amount);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Register a new Output
        /// </summary>
        /// <param name="VehiclePlate"></param>
        /// <returns></returns>
        public RegisterOutPutResponseDto RegisterOutPut(string VehiclePlate)
        {
            RegisterOutPutResponseDto oResponse = new RegisterOutPutResponseDto();
            AVehicleBase aVehicle;

            if (ValidateInputNotOpen(VehiclePlate))
            {
                VehicleEntity oVehicle = GetVehicle(VehiclePlate);

                if (oVehicle != null)
                {
                    aVehicle = GetVehicleBase(oVehicle, (VehicleType)Enum.ToObject(typeof(VehicleType), oVehicle.VehicleType));
                }
                else
                {
                    oVehicle = new VehicleEntity
                    {
                        VehicleType = (int)VehicleType.NotResident
                    };

                    aVehicle = GetVehicleBase(oVehicle, VehicleType.NotResident);
                }

                if (aVehicle != null)
                {
                    ControlInputsOutputsEntity oControlInputsOutputs = unitOfWork
                                                                       .ControlInputsOutputsRepository
                                                                       .FirstOrDefault(g => g.VehiclePlate.ToUpper().Equals(VehiclePlate));

                    Decimal oAmountToBePaid = aVehicle.RegisterOutPut(oControlInputsOutputs);

                    if (unitOfWork.Save() > 0)
                    {
                        oResponse.Inserted       = true;
                        oResponse.Message        = GeneralMessages.ItemInserted;
                        oResponse.AmountToBePaid = oAmountToBePaid;
                    }
                }
                else
                {
                    throw new BusinessExeption(string.Format(GeneralMessages.VehicleAndTypeVehicleNotFound, VehiclePlate, oVehicle.VehicleType));
                }
            }
            else
            {
                oResponse.Message = string.Format(GeneralMessages.OpenCloseEntrance, TypeMovement.OutPut, VehiclePlate.ToUpper(), ExistMovement.No);
            }

            return(oResponse);
        }
Ejemplo n.º 3
0
        public override decimal RegisterOutPut(ControlInputsOutputsEntity controlInputsOutputs)
        {
            AmountEntity oAmount = unitOfWork
                                   .AmountRepository
                                   .LastOrDefault(g => g.VehicleType.Equals((int)VehicleType.NotResident));

            if (oAmount == null)
            {
                throw new BusinessExeption(string.Format(GeneralMessages.AmountNotFound, VehicleType.NotResident.GetDisplayName()));
            }

            controlInputsOutputs.DepartureTime      = DateTime.Now;
            controlInputsOutputs.TotalMinutesOfStay = (decimal)(DateTime.Now - controlInputsOutputs.EntryTime).TotalMinutes;
            unitOfWork.ControlInputsOutputsRepository.Update(controlInputsOutputs);

            return(controlInputsOutputs.TotalMinutesOfStay * oAmount.Amount);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Register a new input
        /// </summary>
        /// <param name="VehiclePlate"></param>
        /// <returns></returns>
        public CreateVehicleResponseDto RegisterInput(string VehiclePlate)
        {
            CreateVehicleResponseDto oResponse = new CreateVehicleResponseDto();

            ControlInputsOutputsEntity oInput = new ControlInputsOutputsEntity
            {
                CreationDate       = DateTime.Now,
                CreationUser       = UsersParkingLot.System,
                VehiclePlate       = VehiclePlate,
                EntryTime          = DateTime.Now,
                TotalMinutesOfStay = 0
            };

            if (!ValidateInputNotOpen(VehiclePlate))
            {
                VehicleEntity oVehicle = GetVehicle(VehiclePlate);

                if (oVehicle != null)
                {
                    oInput.VehicleType = oVehicle.VehicleType;
                }
                else
                {
                    oInput.VehicleType = (int)VehicleType.NotResident;
                }

                unitOfWork.ControlInputsOutputsRepository.Insert(oInput);

                if (unitOfWork.Save() > 0)
                {
                    oResponse.Inserted = true;
                    oResponse.Message  = GeneralMessages.ItemInserted;
                }
            }
            else
            {
                oResponse.Message = string.Format(GeneralMessages.OpenCloseEntrance, TypeMovement.Input, VehiclePlate.ToUpper(), ExistMovement.Already);
            }

            return(oResponse);
        }
 public abstract decimal RegisterOutPut(ControlInputsOutputsEntity controlInputsOutputs);