Пример #1
0
        // GET: Reserves
        public ActionResult Index()
        {
            foreach (var item in db.Reserves)
            {
                DateTime date = item.Date;

                if (date.AddHours(1.0) < DateTime.Now && item.Completed == 1)
                {
                    //Completação da reserva
                    item.Completed = 2;
                    //-----------------------

                    //Reatribuição do horário livre ao Posto de Carregamento
                    TimeAtribuition time = db.TimeAtribuitions.Where(o => o.TimeData.Time.Hour == item.Date.Hour && o.StationPostId == item.StationPostId).Single();

                    TimeData timeData = db.TimeDatas.Where(o => o.Status == true && o.Time.Hour == time.TimeData.Time.Hour).Single();

                    db.TimeAtribuitions.Remove(time);

                    TimeAtribuition ta = new TimeAtribuition()
                    {
                        TimeData      = timeData,
                        TimeDataId    = timeData.TimeDataId,
                        StationPost   = item.StationPost,
                        StationPostId = item.StationPost.StationPostId
                    };

                    db.TimeAtribuitions.Add(ta);
                    //------------------------------------------------------
                }
            }

            db.SaveChanges();

            var reserves = db.Reserves.Include(r => r.RechargeMod).Include(r => r.StationPost);

            if (User.IsInRole("Client"))
            {
                //Reservas do Client autenticado
                string userId = db.Users.Where(o => o.UserName.Equals(User.Identity.Name)).Select(o => o.Id).Single();
                return(View(reserves.Where(o => o.UserId.Equals(userId)).ToList()));
                //------------------------------
            }
            else if (User.IsInRole("Owner"))
            {
                //Impedimento de o owner ver as reservas dos clientes da base de dados
                return(new HttpStatusCodeResult(HttpStatusCode.Forbidden, "You don't have authorization to go to webpage."));
                //--------------------------------------------------------------------
            }
            //Admin e o resto dos utilizadores que não sejam Owner e Client têm acesso a visualizar as reservas feitas
            return(View(reserves.ToList()));
            //--------------------------------------------------------------------------------------------------------
        }
Пример #2
0
        public ActionResult ReservThisPost(int?id, int?timeId, int?stationId)
        {
            if (!User.IsInRole("Client"))
            {
                //Impedimento de o owner ver as reservas dos clientes da base de dados
                return(new HttpStatusCodeResult(HttpStatusCode.Forbidden, "You don't have authorization to go to webpage."));
                //--------------------------------------------------------------------
            }

            ViewBag.RechargeModId = new SelectList(db.RechargeMods, "RechargeModId", "RechargeModName");
            ViewBag.StationPostId = new SelectList(db.StationPosts, "StationPostId", "StationPostName");

            ViewBag.PostId    = id;
            ViewBag.TimeId    = timeId;
            ViewBag.StationId = stationId;

            StationPost stationPost = db.StationPosts.Find(id);
            Station     station     = db.Stations.Find(stationId);

            if (stationPost == null)
            {
                return(HttpNotFound());
            }

            TimeAtribuition time     = db.TimeAtribuitions.Where(o => o.TimeDataId == timeId && o.StationPostId == id).Single();
            TimeData        timeData = db.TimeDatas.Where(o => o.Status == false && o.Time.Hour == time.TimeData.Time.Hour).Single();

            DateTime reservTime = new DateTime(
                DateTime.Now.Year,
                DateTime.Now.Month,
                DateTime.Now.Day,
                timeData.Time.Hour,
                timeData.Time.Minute,
                timeData.Time.Second
                );

            string userId = db.Users.Where(o => o.UserName.Equals(User.Identity.Name)).Single().Id;

            Reserve reserve = new Reserve()
            {
                Date          = reservTime,
                Completed     = 1,
                StationPost   = stationPost,
                StationPostId = stationPost.StationPostId,
                UserId        = userId,
                Price         = stationPost.Price
            };

            return(View(reserve));
        }
Пример #3
0
        public ActionResult Edit([Bind(Include = "StationPostId,StationPostName,RechargeTypeId,Start,Finnish,Price")] StationPost stationPost)
        {
            StationPost sst = db.StationPosts.Find(stationPost.StationPostId);


            if (ModelState.IsValid)
            {
                var times = db.TimeAtribuitions.Where(o => o.StationPostId == stationPost.StationPostId);

                db.TimeAtribuitions.RemoveRange(times);

                for (int i = 0; i < db.TimeDatas.Count() / 2; i++)
                {
                    if (i < stationPost.Start.Hour || i > stationPost.Finnish.Hour)
                    {
                        var             trueTimes = db.TimeDatas.Where(o => o.Time.Hour == i).Where(k => k.Status == false).Single();
                        TimeAtribuition ta        = new TimeAtribuition()
                        {
                            StationPostId = stationPost.StationPostId,
                            StationPost   = stationPost,
                            TimeData      = trueTimes,
                            TimeDataId    = trueTimes.TimeDataId
                        };

                        db.TimeAtribuitions.Add(ta);
                    }
                    else
                    {
                        var             trueTimes = db.TimeDatas.Where(o => o.Time.Hour == i).Where(k => k.Status == true).Single();
                        TimeAtribuition ta        = new TimeAtribuition()
                        {
                            StationPostId = stationPost.StationPostId,
                            StationPost   = stationPost,
                            TimeData      = trueTimes,
                            TimeDataId    = trueTimes.TimeDataId
                        };

                        db.TimeAtribuitions.Add(ta);
                    }
                }

                db.Entry(stationPost).State = EntityState.Modified;
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            ViewBag.RechargeTypeId = new SelectList(db.RechargeTypes, "RechargeTypeId", "RechargeTypeName", stationPost.RechargeTypeId);
            return(View(stationPost));
        }
Пример #4
0
        public ActionResult DeleteConfirmed(int id)
        {
            if (User.IsInRole("Owner"))
            {
                //Impedimento de o owner ver as reservas dos clientes da base de dados
                return(new HttpStatusCodeResult(HttpStatusCode.Forbidden, "You don't have authorization to go to webpage."));
                //--------------------------------------------------------------------
            }

            //Dados Auxilixares
            Reserve reserve   = db.Reserves.Find(id);
            int     stationId = db.StationPostsAtribuition.Where(o => o.StationPostId == reserve.StationPostId).Select(o => o.StationId).Single();
            string  userId    = db.StationAtributions.Where(o => o.StationId == stationId).Select(o => o.UserId).Single();

            //-----------------

            //Execução do pleno de negocios
            db.MoneyAtribuitions.Where(o => o.UserId.Equals(userId)).Single().Cash         += (reserve.Price / 2);
            db.MoneyAtribuitions.Where(o => o.UserId.Equals(reserve.UserId)).Single().Cash += (reserve.Price / 2);
            //-----------------------------

            //Cancelamento da reserva
            reserve.Completed = 0;
            //-----------------------

            //Reatribuição do horário livre ao Posto de Carregamento
            TimeAtribuition time = db.TimeAtribuitions.Where(o => o.TimeData.Time.Hour == reserve.Date.Hour && o.StationPostId == reserve.StationPostId).Single();

            TimeData timeData = db.TimeDatas.Where(o => o.Status == true && o.Time.Hour == time.TimeData.Time.Hour).Single();

            db.TimeAtribuitions.Remove(time);

            TimeAtribuition ta = new TimeAtribuition()
            {
                TimeData      = timeData,
                TimeDataId    = timeData.TimeDataId,
                StationPost   = reserve.StationPost,
                StationPostId = reserve.StationPost.StationPostId
            };

            db.TimeAtribuitions.Add(ta);
            //------------------------------------------------------

            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
Пример #5
0
        public ActionResult Index()
        {
            foreach (var item in db.Reserves)
            {
                DateTime date = item.Date;

                if (date.AddHours(1.0) < DateTime.Now && item.Completed == 1)
                {
                    //Completação da reserva
                    item.Completed = 2;
                    //-----------------------

                    //Reatribuição do horário livre ao Posto de Carregamento
                    TimeAtribuition time = db.TimeAtribuitions.Where(o => o.TimeData.Time.Hour == item.Date.Hour && o.StationPostId == item.StationPostId).Single();

                    TimeData timeData = db.TimeDatas.Where(o => o.Status == true && o.Time.Hour == time.TimeData.Time.Hour).Single();

                    db.TimeAtribuitions.Remove(time);

                    TimeAtribuition ta = new TimeAtribuition()
                    {
                        TimeData      = timeData,
                        TimeDataId    = timeData.TimeDataId,
                        StationPost   = item.StationPost,
                        StationPostId = item.StationPost.StationPostId
                    };

                    db.TimeAtribuitions.Add(ta);
                    //------------------------------------------------------
                }
            }

            db.SaveChanges();

            return(View());
        }
Пример #6
0
        public ActionResult Edit([Bind(Include = "StationId,StationName,LocalId,Start,Finnish")] Station station)
        {
            if (!User.IsInRole("Owner") && !User.IsInRole("Admin"))
            {
                //Impedimento de o owner ver as reservas dos clientes da base de dados
                return(new HttpStatusCodeResult(HttpStatusCode.Forbidden, "You don't have authorization to go to webpage."));
                //--------------------------------------------------------------------
            }

            if (ModelState.IsValid)
            {
                var stationPost = db.StationPostsAtribuition.Where(o => o.StationId == station.StationId).Select(o => o.StationPostId);

                if (stationPost != null)
                {
                    foreach (int idPost in stationPost)
                    {
                        var times = db.TimeAtribuitions.Where(o => o.StationPostId == idPost);

                        db.TimeAtribuitions.RemoveRange(times);

                        db.StationPosts.Find(idPost).Start   = station.Start;
                        db.StationPosts.Find(idPost).Finnish = station.Finnish;

                        for (int i = 0; i < db.TimeDatas.Count() / 2; i++)
                        {
                            if (i < db.StationPosts.Find(idPost).Start.Hour || i > db.StationPosts.Find(idPost).Finnish.Hour)
                            {
                                var             trueTimes = db.TimeDatas.Where(o => o.Time.Hour == i).Where(k => k.Status == false).Single();
                                TimeAtribuition ta        = new TimeAtribuition()
                                {
                                    StationPostId = db.StationPosts.Find(idPost).StationPostId,
                                    StationPost   = db.StationPosts.Find(idPost),
                                    TimeData      = trueTimes,
                                    TimeDataId    = trueTimes.TimeDataId
                                };

                                db.TimeAtribuitions.Add(ta);
                            }
                            else
                            {
                                var             trueTimes = db.TimeDatas.Where(o => o.Time.Hour == i).Where(k => k.Status == true).Single();
                                TimeAtribuition ta        = new TimeAtribuition()
                                {
                                    StationPostId = db.StationPosts.Find(idPost).StationPostId,
                                    StationPost   = db.StationPosts.Find(idPost),
                                    TimeData      = trueTimes,
                                    TimeDataId    = trueTimes.TimeDataId
                                };

                                db.TimeAtribuitions.Add(ta);
                            }
                        }
                    }
                }

                db.Entry(station).State = EntityState.Modified;
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }
            ViewBag.LocalId = new SelectList(db.Locals, "LocalId", "LocalName", station.LocalId);
            return(View(station));
        }
Пример #7
0
        public ActionResult ReservThisPost([Bind(Include = "ReserveId,UserId,StationPostId,RechargeModId,Date,Price,Completed")] Reserve reserve, int?id, int?timeId, int?stationId)
        {
            if (!User.IsInRole("Client"))
            {
                //Impedimento de o owner ver as reservas dos clientes da base de dados
                return(new HttpStatusCodeResult(HttpStatusCode.Forbidden, "You don't have authorization to go to webpage."));
                //--------------------------------------------------------------------
            }

            if (id == null || timeId == null || stationId == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            StationPost stationPost = db.StationPosts.Find(id);
            Station     station     = db.Stations.Find(stationId);

            if (stationPost == null)
            {
                return(HttpNotFound());
            }

            if (ModelState.IsValid)
            {
                string userId = db.Users.Where(o => o.UserName.Equals(User.Identity.Name)).Single().Id;

                decimal saldo = db.MoneyAtribuitions.Where(o => o.UserId.Equals(userId)).Single().Cash;

                if ((saldo - stationPost.Price) < 0)
                {
                    ModelState.AddModelError(string.Empty, "Não tem dinheiro suficiente na sua conta.");

                    ViewBag.RechargeModId = new SelectList(db.RechargeMods, "RechargeModId", "RechargeModName", reserve.RechargeModId);
                    ViewBag.StationPostId = new SelectList(db.StationPosts, "StationPostId", "StationPostName", reserve.StationPostId);

                    return(View(reserve));
                }
                else
                {
                    db.MoneyAtribuitions.Where(o => o.UserId.Equals(userId)).Single().Cash = (saldo - stationPost.Price);
                }

                TimeAtribuition time = db.TimeAtribuitions.Where(o => o.TimeDataId == timeId && o.StationPostId == id).Single();

                TimeData timeData = db.TimeDatas.Where(o => o.Status == false && o.Time.Hour == time.TimeData.Time.Hour).Single();

                db.TimeAtribuitions.Remove(time);

                TimeAtribuition ta = new TimeAtribuition()
                {
                    TimeData      = timeData,
                    TimeDataId    = timeData.TimeDataId,
                    StationPost   = stationPost,
                    StationPostId = stationPost.StationPostId
                };

                db.TimeAtribuitions.Add(ta);

                //necessário porque por alguma razão desconhecida ele não consegue passar esta informação
                reserve.StationPostId = (int)id;
                //---------------------------------------------------------------------------------------

                db.Reserves.Add(reserve);

                db.SaveChanges();
                return(RedirectToAction("Details", new { id = station.StationId }));
            }

            ViewBag.RechargeModId = new SelectList(db.RechargeMods, "RechargeModId", "RechargeModName", reserve.RechargeModId);
            ViewBag.StationPostId = new SelectList(db.StationPosts, "StationPostId", "StationPostName", reserve.StationPostId);
            return(View(reserve));
        }
Пример #8
0
        // GET: Stations
        public ActionResult Index(string local, string procura, int?pagina)
        {
            foreach (var item in db.Reserves)
            {
                DateTime date = item.Date;

                if (date.AddHours(1.0) < DateTime.Now && item.Completed == 1)
                {
                    //Completação da reserva
                    item.Completed = 2;
                    //-----------------------

                    //Reatribuição do horário livre ao Posto de Carregamento
                    TimeAtribuition time = db.TimeAtribuitions.Where(o => o.TimeData.Time.Hour == item.Date.Hour && o.StationPostId == item.StationPostId).Single();

                    TimeData timeData = db.TimeDatas.Where(o => o.Status == true && o.Time.Hour == time.TimeData.Time.Hour).Single();

                    db.TimeAtribuitions.Remove(time);

                    TimeAtribuition ta = new TimeAtribuition()
                    {
                        TimeData      = timeData,
                        TimeDataId    = timeData.TimeDataId,
                        StationPost   = item.StationPost,
                        StationPostId = item.StationPost.StationPostId
                    };

                    db.TimeAtribuitions.Add(ta);
                    //------------------------------------------------------
                }
            }

            db.SaveChanges();

            StationsIndexViewModel svm = new StationsIndexViewModel();

            if (User.IsInRole("Owner"))
            {
                string userId = db.Users.Where(o => o.UserName.Equals(User.Identity.Name)).Select(o => o.Id).Single();

                var stations = db.StationAtributions.Where(o => o.UserId.Equals(userId)).Select(o => o.Station).Include(s => s.Local);

                if (!String.IsNullOrEmpty(procura))
                {
                    stations = stations.Where(s => s.Local.LocalName.Contains(procura) || s.StationName.Contains(procura));

                    svm.Procura = procura;
                }

                int nreg = 5;
                int pag  = (pagina ?? 1); //Se pagina for um valor não nulo pag= pagina; senão pag= 1.

                svm.OrdenarEstacoes(stations, pag, nreg);
            }
            else
            {
                var stations = db.StationAtributions.Select(o => o.Station).Include(s => s.Local);

                if (!String.IsNullOrEmpty(procura))
                {
                    stations = stations.Where(s => s.Local.LocalName.Contains(procura) || s.StationName.Contains(procura));

                    svm.Procura = procura;
                }

                int nreg = 5;
                int pag  = (pagina ?? 1); //Se pagina for um valor não nulo pag= pagina; senão pag= 1.

                svm.OrdenarEstacoes(stations, pag, nreg);
            }

            return(View(svm));
        }
Пример #9
0
        public ActionResult AddPost(StationPost stationPost, int?StationId)
        {
            if (!User.IsInRole("Owner") && !User.IsInRole("Admin"))
            {
                //Impedimento de o owner ver as reservas dos clientes da base de dados
                return(new HttpStatusCodeResult(HttpStatusCode.Forbidden, "You don't have authorization to go to webpage."));
                //--------------------------------------------------------------------
            }

            if (NomePostoRepetido(stationPost))
            {
                ModelState.AddModelError("StationPostName", "Já existe um posto com este nome nesta ou noutra estação.");
                AddPost(StationId);
            }
            else
            {
                if (ModelState.IsValid)
                {
                    db.StationPosts.Add(stationPost);

                    for (int i = 0; i < db.TimeDatas.Count() / 2; i++)
                    {
                        if (i < stationPost.Start.Hour || i > stationPost.Finnish.Hour)
                        {
                            var             trueTimes = db.TimeDatas.Where(o => o.Time.Hour == i).Where(k => k.Status == false).Single();
                            TimeAtribuition ta        = new TimeAtribuition()
                            {
                                StationPostId = stationPost.StationPostId,
                                StationPost   = stationPost,
                                TimeData      = trueTimes,
                                TimeDataId    = trueTimes.TimeDataId
                            };

                            db.TimeAtribuitions.Add(ta);
                        }
                        else
                        {
                            var             trueTimes = db.TimeDatas.Where(o => o.Time.Hour == i).Where(k => k.Status == true).Single();
                            TimeAtribuition ta        = new TimeAtribuition()
                            {
                                StationPostId = stationPost.StationPostId,
                                StationPost   = stationPost,
                                TimeData      = trueTimes,
                                TimeDataId    = trueTimes.TimeDataId
                            };

                            db.TimeAtribuitions.Add(ta);
                        }
                    }

                    Station stat = db.Stations.Find(StationId);

                    StationPostsAtribuition sss = new StationPostsAtribuition()
                    {
                        Station       = stat,
                        StationId     = stat.StationId,
                        StationPost   = stationPost,
                        StationPostId = stationPost.StationPostId
                    };

                    db.StationPostsAtribuition.Add(sss);

                    db.SaveChanges();
                    return(RedirectToAction("Index"));
                }
            }

            ViewBag.RechargeTypeId = new SelectList(db.RechargeTypes, "RechargeTypeId", "RechargeTypeName", stationPost.RechargeTypeId);
            return(View(stationPost));
        }
Пример #10
0
        // GET: Statistics
        public ActionResult Index()
        {
            ApplicationDbContext db = new ApplicationDbContext();

            foreach (var item in db.Reserves)
            {
                DateTime date = item.Date;

                if (date.AddHours(1.0) < DateTime.Now && item.Completed == 1)
                {
                    //Completação da reserva
                    item.Completed = 2;
                    //-----------------------

                    //Reatribuição do horário livre ao Posto de Carregamento
                    TimeAtribuition time = db.TimeAtribuitions.Where(o => o.TimeData.Time.Hour == item.Date.Hour && o.StationPostId == item.StationPostId).Single();

                    TimeData timeData = db.TimeDatas.Where(o => o.Status == true && o.Time.Hour == time.TimeData.Time.Hour).Single();

                    db.TimeAtribuitions.Remove(time);

                    TimeAtribuition ta = new TimeAtribuition()
                    {
                        TimeData      = timeData,
                        TimeDataId    = timeData.TimeDataId,
                        StationPost   = item.StationPost,
                        StationPostId = item.StationPost.StationPostId
                    };

                    db.TimeAtribuitions.Add(ta);
                    //------------------------------------------------------
                }
            }

            db.SaveChanges();

            Dictionary <string, int>     timeCount  = new Dictionary <string, int>();
            Dictionary <string, decimal> moneyCount = new Dictionary <string, decimal>();

            List <StatisticTimeData> dataPoints      = new List <StatisticTimeData>();
            List <StatisticMoney>    dataMoneyPoints = new List <StatisticMoney>();

            List <string> times = new List <string>();

            if (User.IsInRole("Client"))
            {
                //Impedimento de o owner ver as reservas dos clientes da base de dados
                return(new HttpStatusCodeResult(HttpStatusCode.Forbidden, "You don't have authorization to go to webpage."));
                //--------------------------------------------------------------------
            }
            else if (User.IsInRole("Owner"))
            {
                string userId = db.Users.Where(o => o.UserName.Equals(User.Identity.Name)).Select(o => o.Id).Single();

                List <Reserve> reservasOwner   = new List <Reserve>();
                List <int>     reservasnumbers = new List <int>();
                List <int>     postsnumbers    = new List <int>();

                foreach (var item in db.StationAtributions)
                {
                    if (item.UserId.Equals(userId))
                    {
                        reservasnumbers.Add(item.StationId);
                    }
                }

                for (int i = 0; i < reservasnumbers.Count(); i++)
                {
                    int val     = reservasnumbers[i];
                    var guardar = db.StationPostsAtribuition.Where(o => o.StationId == val).Select(o => o.StationPostId).ToList();
                    postsnumbers.Add(guardar.ToList()[0]);
                }

                int j = 0;

                for (int i = 0; i < db.Reserves.Count() && j < postsnumbers.Count(); i++)
                {
                    List <Reserve> all = db.Reserves.ToList();
                    if (all[i].StationPostId == postsnumbers[j])
                    {
                        reservasOwner.Add(all[i]);
                        j++;
                    }
                }

                foreach (var item in reservasOwner)
                {
                    if (!times.Contains(item.Date.Month + "/" + item.Date.Year + " Status: " + getDefinition(item.Completed)))
                    {
                        times.Add(item.Date.Month + "/" + item.Date.Year + " Status: " + getDefinition(item.Completed));
                        int     ccc        = db.Reserves.Where(o => o.Date.Month == item.Date.Month && o.Date.Year == item.Date.Year && o.Completed == item.Completed).Count();
                        decimal totalmoney = db.Reserves.Where(o => o.Date.Month == item.Date.Month && o.Date.Year == item.Date.Year && o.Completed == item.Completed).Select(o => o.Price).Sum();
                        timeCount.Add(item.Date.Month + "/" + item.Date.Year + " Status: " + getDefinition(item.Completed), ccc);
                        if (item.Completed == 0)
                        {
                            moneyCount.Add(item.Date.Month + "/" + item.Date.Year + " Status: " + getDefinition(item.Completed), totalmoney / 2);
                        }
                        else if (item.Completed == 1)
                        {
                            moneyCount.Add(item.Date.Month + "/" + item.Date.Year + " Status: " + getDefinition(item.Completed), totalmoney);
                        }
                        else if (item.Completed == 2)
                        {
                            moneyCount.Add(item.Date.Month + "/" + item.Date.Year + " Status: " + getDefinition(item.Completed), totalmoney);
                        }
                    }
                }
            }
            else
            {
                foreach (var item in db.Reserves)
                {
                    if (!times.Contains(item.Date.Month + "/" + item.Date.Year + " Status: " + getDefinition(item.Completed)))
                    {
                        times.Add(item.Date.Month + "/" + item.Date.Year + " Status: " + getDefinition(item.Completed));
                        int     ccc        = db.Reserves.Where(o => o.Date.Month == item.Date.Month && o.Date.Year == item.Date.Year && o.Completed == item.Completed).Count();
                        decimal totalmoney = db.Reserves.Where(o => o.Date.Month == item.Date.Month && o.Date.Year == item.Date.Year && o.Completed == item.Completed).Select(o => o.Price).Sum();
                        timeCount.Add(item.Date.Month + "/" + item.Date.Year + " Status: " + getDefinition(item.Completed), ccc);
                        if (item.Completed == 0)
                        {
                            moneyCount.Add(item.Date.Month + "/" + item.Date.Year + " Status: " + getDefinition(item.Completed), totalmoney / 2);
                        }
                        else if (item.Completed == 1)
                        {
                            moneyCount.Add(item.Date.Month + "/" + item.Date.Year + " Status: " + getDefinition(item.Completed), totalmoney);
                        }
                        else if (item.Completed == 2)
                        {
                            moneyCount.Add(item.Date.Month + "/" + item.Date.Year + " Status: " + getDefinition(item.Completed), totalmoney);
                        }
                    }
                }

                foreach (string item in times)
                {
                    dataPoints.Add(new StatisticTimeData(item, timeCount[item], item));
                    dataMoneyPoints.Add(new StatisticMoney(item.Count(), moneyCount[item], item));
                }

                ViewBag.DataTimeReservePoints = JsonConvert.SerializeObject(dataPoints);
                ViewBag.DataMoneyPoints       = JsonConvert.SerializeObject(dataMoneyPoints);

                //Tentativa de obter informação sobre cada Owner

                times = new List <string>();

                OwnerPoints      = new Dictionary <string, List <StatisticTimeData> >();
                OwnerMoneyPoints = new Dictionary <string, List <StatisticMoney> >();
                userOwnersKeys   = new List <string>();

                foreach (var item in db.Users)
                {
                    string nomeRole = db.Roles.Where(o => o.Name.Equals("Owner")).Select(o => o.Id).Single();

                    if (item.Roles.Select(o => o.RoleId).Contains(nomeRole))
                    {
                        string userId = item.Id;

                        OwnerPoints.Add(item.UserName, new List <StatisticTimeData>());
                        OwnerMoneyPoints.Add(item.UserName, new List <StatisticMoney>());
                        userOwnersKeys.Add(item.UserName);

                        List <Reserve> reservasOwner   = new List <Reserve>();
                        List <int>     reservasnumbers = new List <int>();
                        List <int>     postsnumbers    = new List <int>();

                        foreach (var items in db.StationAtributions)
                        {
                            if (items.UserId.Equals(userId))
                            {
                                reservasnumbers.Add(items.StationId);
                            }
                        }

                        for (int i = 0; i < reservasnumbers.Count(); i++)
                        {
                            int val     = reservasnumbers[i];
                            var guardar = db.StationPostsAtribuition.Where(o => o.StationId == val).Select(o => o.StationPostId).ToList();
                            postsnumbers.Add(guardar.ToList()[0]);
                        }

                        int j = 0;

                        for (int i = 0; i < db.Reserves.Count() && j < postsnumbers.Count(); i++)
                        {
                            List <Reserve> all = db.Reserves.ToList();
                            if (all[i].StationPostId == postsnumbers[j])
                            {
                                reservasOwner.Add(all[i]);
                                j++;
                            }
                        }

                        foreach (var items in reservasOwner)
                        {
                            if (!times.Contains(items.Date.Month + "/" + items.Date.Year + " Status: " + getDefinition(items.Completed)))
                            {
                                times.Add(items.Date.Month + "/" + items.Date.Year + " Status: " + getDefinition(items.Completed));
                                int     ccc        = db.Reserves.Where(o => o.Date.Month == items.Date.Month && o.Date.Year == items.Date.Year && o.Completed == items.Completed).Count();
                                decimal totalmoney = db.Reserves.Where(o => o.Date.Month == items.Date.Month && o.Date.Year == items.Date.Year && o.Completed == items.Completed).Select(o => o.Price).Sum();

                                string keysss = items.Date.Month + "/" + items.Date.Year + " Status: " + getDefinition(items.Completed);

                                OwnerPoints[item.UserName].Add(new StatisticTimeData(keysss, ccc, keysss));

                                if (items.Completed == 0)
                                {
                                    OwnerMoneyPoints[item.UserName].Add(new StatisticMoney(keysss.Count() + (int)items.Date.Ticks - 1, totalmoney / 2, keysss));
                                }
                                else if (items.Completed == 1)
                                {
                                    OwnerMoneyPoints[item.UserName].Add(new StatisticMoney(keysss.Count() + (int)items.Date.Ticks, totalmoney, keysss));
                                }
                                else if (items.Completed == 2)
                                {
                                    OwnerMoneyPoints[item.UserName].Add(new StatisticMoney(keysss.Count() + (int)items.Date.Ticks + 1, totalmoney, keysss));
                                }
                            }
                        }
                    }
                }

                ViewBag.AllOwnersNames = userOwnersKeys;
                ViewBag.AllOwnerSize   = userOwnersKeys.Count();

                return(View());
                //----------------------------------------------
            }


            foreach (string item in times)
            {
                dataPoints.Add(new StatisticTimeData(item, timeCount[item], item));
                dataMoneyPoints.Add(new StatisticMoney(item.Count(), moneyCount[item], item));
            }

            ViewBag.DataTimeReservePoints = JsonConvert.SerializeObject(dataPoints);
            ViewBag.DataMoneyPoints       = JsonConvert.SerializeObject(dataMoneyPoints);

            return(View());
        }
Пример #11
0
        // GET: StationPosts
        public ActionResult Index()
        {
            foreach (var item in db.Reserves)
            {
                DateTime date = item.Date;

                if (date.AddHours(1.0) < DateTime.Now && item.Completed == 1)
                {
                    //Completação da reserva
                    item.Completed = 2;
                    //-----------------------

                    //Reatribuição do horário livre ao Posto de Carregamento
                    TimeAtribuition time = db.TimeAtribuitions.Where(o => o.TimeData.Time.Hour == item.Date.Hour && o.StationPostId == item.StationPostId).Single();

                    TimeData timeData = db.TimeDatas.Where(o => o.Status == true && o.Time.Hour == time.TimeData.Time.Hour).Single();

                    db.TimeAtribuitions.Remove(time);

                    TimeAtribuition ta = new TimeAtribuition()
                    {
                        TimeData      = timeData,
                        TimeDataId    = timeData.TimeDataId,
                        StationPost   = item.StationPost,
                        StationPostId = item.StationPost.StationPostId
                    };

                    db.TimeAtribuitions.Add(ta);
                    //------------------------------------------------------
                }
            }

            db.SaveChanges();

            if (User.IsInRole("Owner"))
            {
                String userid = db.Users.Where(o => o.UserName.Equals(User.Identity.Name)).Select(o => o.Id).Single();

                List <int> estacoesUser = db.StationAtributions.Where(o => o.UserId.Equals(userid)).Select(o => o.StationId).ToList();

                List <int> postss = new List <int>();

                foreach (StationPostsAtribuition postId in db.StationPostsAtribuition.ToList())
                {
                    if (estacoesUser.Contains(postId.StationId))
                    {
                        postss.Add(postId.StationPostId);
                    }
                }

                List <StationPost> postsTrue = new List <StationPost>();

                foreach (StationPost postId in db.StationPosts.ToList())
                {
                    if (postss.Contains(postId.StationPostId))
                    {
                        postsTrue.Add(postId);
                    }
                }

                return(View(postsTrue.ToList()));
            }

            var stationPosts = db.StationPosts.Include(s => s.RechargeType).OrderBy(o => o.StationPostId);

            return(View(stationPosts.ToList()));
        }