示例#1
0
        public virtual async Task <Package> SetModelContentAsync(int packageId, byte[] bpmnContent, string comment = null)
        {
            if (bpmnContent == null)
            {
                throw new ArgumentNullException(nameof(bpmnContent));
            }

            var query = this.session.Query <Package>();

            query = this.session.Fetch(query, x => x.Source);
            query = query.Where(x => x.Id == packageId);

            var package = await this.session.QuerySingleAsync(query);

            if (package == null)
            {
                throw new ObjectNotFoundException(nameof(Package));
            }

            package.Modified = Clock.Now;

            var oldContent = package.Source;

            //Assign new model.
            package.Source = new ByteArray(bpmnContent);

            //Create historic model.
            var hiModel = new HistoricModel();

            hiModel.Package = package;
            hiModel.Created = Clock.Now;
            hiModel.Comment = comment;
            hiModel.UserId  = this.context.UserId;
            hiModel.Content = oldContent;

            await this.session.SaveAsync(hiModel);

            await this.session.FlushAsync();

            return(package);
        }
示例#2
0
        /// <summary>
        /// Recupera todas as informações relacionadas ao histórico do usuário.
        /// </summary>
        /// <param name="userID">Identificador do usuário</param>
        /// <param name="year">Ano para efetuar a pesquisa</param>
        /// <returns>HistoricModel com todas as identificações do usuário</returns>
        public static HistoricModel RetrieveUserHistory(Guid userID, int year)
        {
            DBConfigurations database = new DBConfigurations();

            var offeredRides       = (from rides in database.Ride where rides.DonorID == userID && rides.TimeFrom.Year == year select rides).ToList();
            var receivedRidesUsers = (from rideUsers in database.RideUsers where rideUsers.UserID == userID select rideUsers).ToList();
            var receivedAllRides   = RidesManager.GetRidesFromRideUsers(receivedRidesUsers);

            //filtra para apenas o ano recebido
            var receivedRides = new List <Rides>();

            foreach (var ride in receivedAllRides)
            {
                if (ride.TimeFrom.Year == year)
                {
                    receivedRides.Add(ride);
                }
            }

            var drivedDistance   = offeredRides.Select(distance => distance.Distance).Sum();
            var acceptedDistance = receivedRides.Select(distance => distance.Distance).Sum();

            double totalGain = 0.0;

            //calcula total ganho
            foreach (var offered in offeredRides)
            {
                if (offered.Seats != offered.RemainingSeats)
                {
                    int aceitaram = offered.Seats - offered.RemainingSeats;
                    totalGain = totalGain + Convert.ToDouble(offered.Price * aceitaram);
                }
            }

            double totalPaid = 0.0;

            //calcula total pago
            foreach (var received in receivedRides)
            {
                totalPaid = totalPaid + Convert.ToDouble(received.Price);
            }

            var historicModel = new HistoricModel
            {
                AcceptedDistance = acceptedDistance,
                DrivedDistance   = drivedDistance,
                OfferedRides     = Conversor.ListRidesToListModel(offeredRides),
                ReceivedRides    = Conversor.ListRidesToListModel(receivedRides),
                TotalGain        = totalGain,
                TotalPaid        = totalPaid
            };

            //monta LucroAnual e oferecidas
            foreach (var offered in offeredRides)
            {
                int    mes        = offered.TimeFrom.Month;
                double lucroNoMes = historicModel.LucroAnualOferecidas[mes];
                lucroNoMes = lucroNoMes + Convert.ToDouble(offered.Price);
                historicModel.LucroAnualOferecidas[mes] = lucroNoMes;

                int caronasOferecidas = historicModel.CaronasAnuaisOferecidas[mes];
                caronasOferecidas++;
                historicModel.CaronasAnuaisOferecidas[mes] = caronasOferecidas;
            }

            //monta pagamento anual e aceitas
            foreach (var received in receivedRides)
            {
                int    mes        = received.TimeFrom.Month;
                double lucroNoMes = historicModel.LucroAnualAceitas[mes];
                lucroNoMes = lucroNoMes + Convert.ToDouble(received.Price);
                historicModel.LucroAnualAceitas[mes] = lucroNoMes;

                int caronasAceitas = historicModel.CaronasAnuaisAceitas[mes];
                caronasAceitas++;
                historicModel.CaronasAnuaisAceitas[mes] = caronasAceitas;
            }

            return(historicModel);
        }