コード例 #1
0
        public IHttpActionResult List()
        {
            User = System.Web.HttpContext.Current.User;
            int user;

            int.TryParse(((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Id").Value, out user);

            ((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Admin");
            if (((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Admin").Value == "false")
            {
                return(Content(HttpStatusCode.Forbidden, "Brak uprawnień do wykonania zadania!"));
            }

            List <Models.DzienRoboczyPracownikaToSend> lista = new List <Models.DzienRoboczyPracownikaToSend>();

            try
            {
                Models.DataBaseEntities db = new Models.DataBaseEntities();

                foreach (Models.DzienTygodnia d in db.DzienTygodnia)
                {
                    foreach (Models.DzienRoboczyPracownika drp in d.DzienRoboczyPracownika)
                    {
                        lista.Add(new Models.DzienRoboczyPracownikaToSend(drp));
                    }
                }
            }
            catch (Exception ex)
            {
                return(Content(HttpStatusCode.InternalServerError, "Błąd serwera"));
            }

            return(Ok(lista));
        }
コード例 #2
0
        public IHttpActionResult Zatwierdz(int id)
        {
            User = System.Web.HttpContext.Current.User;
            int user;

            int.TryParse(((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Id").Value, out user);

            ((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Admin");
            if (((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Admin").Value == "false")
            {
                return(Content(HttpStatusCode.Forbidden, "Brak uprawnień do wykonania zadania!"));
            }

            try
            {
                Models.DataBaseEntities db = new Models.DataBaseEntities();

                Models.Urlop ur = db.Urlop.First(u => u.Id == id);
                ur.Zatwierdzony = true;

                db.SaveChanges();
            }
            catch (InvalidOperationException ex)
            {
                return(Content(HttpStatusCode.NotFound, "Nie znaleziono urlopu o id " + id));
            }
            catch (Exception ex)
            {
                return(Content(HttpStatusCode.InternalServerError, "Błąd serwera"));
            }

            return(Ok(id));
        }
コード例 #3
0
        public IHttpActionResult SkasujPozycje(int id)
        {
            User = System.Web.HttpContext.Current.User;
            ((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Admin");
            if (((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Admin").Value == "false")
            {
                return(Content(HttpStatusCode.Forbidden, "Brak uprawnień do wykonania zadania!"));
            }

            try
            {
                Models.DataBaseEntities      db  = new Models.DataBaseEntities();
                Models.PracownikNaStanowisku pns = db.PracownikNaStanowisku.FirstOrDefault(p => p.Id == id);

                if (pns == null)
                {
                    return(Content(HttpStatusCode.NotFound, "Nie znaleziono pozycji o id " + id));
                }

                db.PracownikNaStanowisku.Remove(pns);
                db.SaveChanges();
            }
            catch (Exception ex)
            {
                return(Content(HttpStatusCode.InternalServerError, ex.ToString()));
            }

            return(Ok());
        }
コード例 #4
0
        public IHttpActionResult StanowiskoDelete(int pracownik, int stanowisko)
        {
            User = System.Web.HttpContext.Current.User;
            int user;

            int.TryParse(((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Id").Value, out user);

            ((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Admin");
            if (((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Admin").Value == "false" &&
                user != pracownik)
            {
                return(Content(HttpStatusCode.Forbidden, "Brak uprawnień do wykonania zadania!"));
            }

            List <Models.StanowiskoPracownikaToSend> stanowiska = new List <Models.StanowiskoPracownikaToSend>();

            try
            {
                Models.DataBaseEntities     db = new Models.DataBaseEntities();
                Models.StanowiskoPracownika sp = db.StanowiskoPracownika.First(s => s.Pracownik.Id == pracownik && s.Stanowisko.Id == stanowisko);

                db.StanowiskoPracownika.Remove(sp);
            }
            catch (InvalidOperationException ex)
            {
                return(Content(HttpStatusCode.NotFound, "Nie znaleziono pracownika o id" + pracownik + " pracującego na stanowisku o id" + stanowisko));
            }
            catch (Exception ex)
            {
                return(Content(HttpStatusCode.InternalServerError, "Błąd serwera"));
            }

            return(Ok(stanowiska));
        }
コード例 #5
0
        public IHttpActionResult List(Boolean czyWszystkie)
        {
            List <Models.GrafikToSend> lista = new List <Models.GrafikToSend>();

            try
            {
                Models.DataBaseEntities db = new Models.DataBaseEntities();
                if (czyWszystkie)
                {
                    foreach (Models.Grafik gr in db.Grafik)
                    {
                        lista.Add(new Models.GrafikToSend(gr, false));
                    }
                }
                else
                {
                    foreach (Models.Grafik gr in db.Grafik.Where(g => g.Zatwierdzony != null))
                    {
                        lista.Add(new Models.GrafikToSend(gr, false));
                    }
                }
            }
            catch (Exception ex)
            {
                return(Content(HttpStatusCode.InternalServerError, "Błąd serwera"));
            }

            return(Ok(lista));
        }
コード例 #6
0
        public IHttpActionResult List()
        {
            List <Models.StanowiskoToSend> lista = new List <Models.StanowiskoToSend>();

            try
            {
                Models.DataBaseEntities db = new Models.DataBaseEntities();

                foreach (Models.Stanowisko st in db.Stanowisko)
                {
                    /*
                     * st.PracownikNaStanowisku = null;
                     * st.StanowiskoPracownika = null;
                     * st.StanowiskoMiejsca = null;
                     * lista.Add(st);
                     */
                    lista.Add(new Models.StanowiskoToSend(st, false));
                }
            }
            catch (Exception ex)
            {
                return(Content(HttpStatusCode.InternalServerError, "Błąd serwera"));
            }

            return(Ok(lista));
        }
コード例 #7
0
        public IHttpActionResult Get(int id)
        {
            User = System.Web.HttpContext.Current.User;
            int user;

            int.TryParse(((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Id").Value, out user);

            ((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Admin");
            if (((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Admin").Value == "false" &&
                user != id)
            {
                return(Content(HttpStatusCode.Forbidden, "Brak uprawnień do wykonania zadania!"));
            }
            try
            {
                Models.DataBaseEntities db        = new Models.DataBaseEntities();
                Models.Pracownik        pracownik = db.Pracownik.First(p => p.Id == id);

                return(Ok(new Models.PracownikToSend(pracownik, true)));
            }
            catch (InvalidOperationException ex)
            {
                return(Content(HttpStatusCode.NotFound, "Nie znaleziono pracownika o id " + id));
            }
            catch (Exception ex)
            {
                return(Content(HttpStatusCode.InternalServerError, "Błąd serwera"));
            }
        }
コード例 #8
0
        public IHttpActionResult Put(Models.DzienRoboczyPracownikaToSend dzienRoboczy)
        {
            User = System.Web.HttpContext.Current.User;
            int user;

            int.TryParse(((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Id").Value, out user);

            ((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Admin");
            if (((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Admin").Value == "false")
            {
                return(Content(HttpStatusCode.Forbidden, "Brak uprawnień do wykonania zadania!"));
            }

            Models.DzienRoboczyPracownika drp = null;
            try
            {
                Models.DataBaseEntities db        = new Models.DataBaseEntities();
                Models.Pracownik        pracownik = db.Pracownik.First(p => p.Id == dzienRoboczy.pracownik);

                drp = pracownik.DzienRoboczyPracownika.FirstOrDefault(d => d.DzienTygodnia.Id == dzienRoboczy.dzien);
                if (drp != null)
                {
                    drp.Poczatek = dzienRoboczy.poczatek;
                    drp.Koniec   = dzienRoboczy.koniec;
                }
                else
                {
                    drp = new Models.DzienRoboczyPracownika();
                    drp.DzienTygodnia = db.DzienTygodnia.First(d => d.Id == dzienRoboczy.dzien);
                    drp.Koniec        = dzienRoboczy.koniec;
                    drp.Poczatek      = dzienRoboczy.poczatek;
                    drp.Pracownik     = pracownik;

                    db.DzienRoboczyPracownika.Add(drp);
                }

                db.SaveChanges();
            }
            catch (DbEntityValidationException e)
            {
                string wiadomosc = "";
                foreach (DbValidationError er in e.EntityValidationErrors.First().ValidationErrors)
                {
                    wiadomosc += er.ErrorMessage + "\n";
                }
                return(Content(HttpStatusCode.BadRequest, wiadomosc));
            }
            catch (InvalidOperationException ex)
            {
                return(Content(HttpStatusCode.NotFound, "Nie znaleziono pracownika o id " + dzienRoboczy.pracownik));
            }
            catch (Exception ex)
            {
                return(Content(HttpStatusCode.InternalServerError, "Błąd serwera"));
            }

            return(Ok(drp.Id));
        }
コード例 #9
0
        public IHttpActionResult StanowiskoAdd(int pracownik, int stanowisko)
        {
            User = System.Web.HttpContext.Current.User;
            int user;

            int.TryParse(((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Id").Value, out user);

            ((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Admin");
            if (((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Admin").Value == "false" &&
                user != pracownik)
            {
                return(Content(HttpStatusCode.Forbidden, "Brak uprawnień do wykonania zadania!"));
            }

            try
            {
                Models.DataBaseEntities     db = new Models.DataBaseEntities();
                Models.StanowiskoPracownika sp = db.StanowiskoPracownika.FirstOrDefault(s => s.Pracownik.Id == pracownik && s.Stanowisko.Id == stanowisko);

                if (sp == null)
                {
                    sp           = new Models.StanowiskoPracownika();
                    sp.Pracownik = db.Pracownik.FirstOrDefault(p => p.Id == pracownik);
                    if (sp.Pracownik == null)
                    {
                        return(Content(HttpStatusCode.NotFound, "Nie znaleziono pracownika o id" + pracownik));
                    }
                    sp.Stanowisko = db.Stanowisko.FirstOrDefault(s => s.Id == stanowisko);

                    if (sp.Stanowisko == null)
                    {
                        return(Content(HttpStatusCode.NotFound, "Nie znaleziono stanowiska o id" + stanowisko));
                    }

                    db.StanowiskoPracownika.Add(sp);
                }
            }
            catch (DbEntityValidationException e)
            {
                string wiadomosc = "";
                foreach (DbValidationError er in e.EntityValidationErrors.First().ValidationErrors)
                {
                    wiadomosc += er.ErrorMessage + "\n";
                }
                return(Content(HttpStatusCode.BadRequest, wiadomosc));
            }
            catch (Exception ex)
            {
                return(Content(HttpStatusCode.InternalServerError, "Błąd serwera"));
            }

            return(Ok());
        }
コード例 #10
0
        public IHttpActionResult List(int id, DateTime data, Boolean zatwierdzone)
        {
            User = System.Web.HttpContext.Current.User;
            int user;

            int.TryParse(((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Id").Value, out user);

            ((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Admin");
            if (((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Admin").Value == "false" &&
                user != id)
            {
                return(Content(HttpStatusCode.Forbidden, "Brak uprawnień do wykonania zadania!"));
            }

            List <Models.UrlopToSend> lista = new List <Models.UrlopToSend>();

            try
            {
                Models.DataBaseEntities db        = new Models.DataBaseEntities();
                Models.Pracownik        pracownik = db.Pracownik.First(p => p.Id == id);

                if (zatwierdzone)
                {
                    foreach (Models.Urlop u in db.Urlop.Where(u => u.Zatwierdzony && u.DzienUrlopu.OrderBy(dd => dd.Dzien_Data).FirstOrDefault().Dzien_Data >= data))
                    //foreach (Models.Urlop u in pracownik.Urlop.Where(ur => ur.Zatwierdzony == true))
                    {
                        lista.Add(new Models.UrlopToSend(u));
                    }
                }
                else
                {
                    foreach (Models.Urlop u in pracownik.Urlop.Where(u => u.DzienUrlopu.OrderBy(dd => dd.Dzien_Data).FirstOrDefault().Dzien_Data >= data))
                    //foreach (Models.Urlop u in pracownik.Urlop)
                    {
                        lista.Add(new Models.UrlopToSend(u));
                    }
                }
            }
            catch (InvalidOperationException ex)
            {
                return(Content(HttpStatusCode.NotFound, "Nie znaleziono pracownika o id " + id));
            }
            catch (Exception ex)
            {
                return(Content(HttpStatusCode.InternalServerError, "Błąd serwera"));
            }

            return(Ok(lista));
        }
コード例 #11
0
        public IHttpActionResult Delete(int pracownik, int dzien)
        {
            User = System.Web.HttpContext.Current.User;
            int user;

            int.TryParse(((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Id").Value, out user);

            ((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Admin");
            if (((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Admin").Value == "false")
            {
                return(Content(HttpStatusCode.Forbidden, "Brak uprawnień do wykonania zadania!"));
            }

            Models.DzienRoboczyPracownika drp = null;
            try
            {
                Models.DataBaseEntities db = new Models.DataBaseEntities();
                Models.Pracownik        pr = db.Pracownik.First(p => p.Id == pracownik);
                if (dzien < 0 || dzien > 6)
                {
                    throw new ArgumentException();
                }

                drp = pr.DzienRoboczyPracownika.FirstOrDefault(d => d.DzienTygodnia.Id == dzien);

                db.DzienRoboczyPracownika.Remove(drp);

                db.SaveChanges();
            }
            catch (ArgumentException ex)
            {
                return(Content(HttpStatusCode.NotFound, "Nie ma dnia tygodnia nr " + dzien));
            }
            catch (InvalidOperationException ex)
            {
                return(Content(HttpStatusCode.NotFound, "Nie znaleziono pracownika o id " + pracownik));
            }
            catch (Exception ex)
            {
                return(Content(HttpStatusCode.InternalServerError, "Błąd serwera"));
            }

            return(Ok(drp.Id));
        }
コード例 #12
0
        public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
        {
            var identity = new ClaimsIdentity(context.Options.AuthenticationType);

            context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" });

            using (var db = new Models.DataBaseEntities())
            {
                if (db != null)
                {
                    var users = db.Pracownik.ToList();
                    if (users != null)
                    {
                        var user = users.Find(u => u.Email == context.UserName && u.Haslo == context.Password && u.Haslo != "");
                        if (user != null)
                        {
                            identity.AddClaim(new Claim("Id", user.Id.ToString()));
                            identity.AddClaim(new Claim("Admin", user.Administrator.ToString()));

                            var props = new AuthenticationProperties(new Dictionary <string, string>
                            {
                                {
                                    "userdisplayname", user.Imie + " " + user.Nazwisko
                                }
                            });

                            var ticket = new AuthenticationTicket(identity, props);
                            context.Validated(ticket);
                        }
                        else
                        {
                            context.SetError("invalid_grant", "Nieprawidłowy Email lub Hasło");
                            context.Rejected();
                        }
                    }
                }
                else
                {
                    context.SetError("invalid_grant", "Nieprawidłowy Email lub Hasło");
                    context.Rejected();
                }
                return;
            }
        }
コード例 #13
0
        public IHttpActionResult Get()
        {
            try
            {
                Models.DataBaseEntities db = new Models.DataBaseEntities();
                int user = int.Parse(((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Id").Value);
                Models.Pracownik pracownik = db.Pracownik.First(p => p.Id == user);

                return(Ok(new Models.PracownikToSend(pracownik, true)));
            }
            catch (InvalidOperationException ex)
            {
                return(Content(HttpStatusCode.NotFound, "Nie istnieje pracownik odpowiadający przesłanemu tokenowi"));
            }
            catch (Exception ex)
            {
                return(Content(HttpStatusCode.InternalServerError, "Błąd serwera"));
            }
        }
コード例 #14
0
        public IHttpActionResult Delete(int id)
        {
            User = System.Web.HttpContext.Current.User;
            int user;

            int.TryParse(((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Id").Value, out user);

            ((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Admin");
            if (((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Admin").Value == "false")
            {
                return(Content(HttpStatusCode.Forbidden, "Brak uprawnień do wykonania zadania!"));
            }
            try
            {
                Models.DataBaseEntities db         = new Models.DataBaseEntities();
                Models.Stanowisko       stanowisko = db.Stanowisko.First(s => s.Id == id);

                stanowisko.StanowiskoPracownika.Clear();
                stanowisko.StanowiskoMiejsca.Clear();

                db.SaveChanges();
            }
            catch (DbEntityValidationException e)
            {
                string wiadomosc = "";
                foreach (DbValidationError er in e.EntityValidationErrors.First().ValidationErrors)
                {
                    wiadomosc += er.ErrorMessage + "\n";
                }
                return(Content(HttpStatusCode.BadRequest, wiadomosc));
            }
            catch (InvalidOperationException ex)
            {
                return(Content(HttpStatusCode.NotFound, "Nie znaleziono stanowiska o id " + id));
            }
            catch (Exception ex)
            {
                return(Content(HttpStatusCode.InternalServerError, "Błąd serwera"));
            }

            return(Ok());
        }
コード例 #15
0
        public IHttpActionResult Get(int id)
        {
            Models.GrafikToSend grafik = null;

            try
            {
                Models.DataBaseEntities db = new Models.DataBaseEntities();
                grafik = new Models.GrafikToSend(db.Grafik.First(g => g.Id == id));
            }
            catch (InvalidOperationException ex)
            {
                return(Content(HttpStatusCode.NotFound, "Nie znaleziono grafiku o id " + id));
            }
            catch (Exception ex)
            {
                return(Content(HttpStatusCode.InternalServerError, "Błąd serwera"));
            }

            return(Ok(grafik));
        }
コード例 #16
0
        public IHttpActionResult Zatwierdz(int id, Boolean zatwierdzone)
        {
            User = System.Web.HttpContext.Current.User;
            int user;

            int.TryParse(((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Id").Value, out user);

            ((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Admin");
            if (((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Admin").Value == "false")
            {
                return(Content(HttpStatusCode.Forbidden, "Brak uprawnień do wykonania zadania!"));
            }

            Models.DataBaseEntities db = new Models.DataBaseEntities();

            Models.Grafik gr = null;
            try
            {
                gr = db.Grafik.First(g => g.Id == id);

                if (zatwierdzone)
                {
                    gr.Zatwierdzony = DateTime.Now;
                }
                else
                {
                    gr.Zatwierdzony = null;
                }
                db.SaveChanges();
            }
            catch (InvalidOperationException ex)
            {
                return(Content(HttpStatusCode.NotFound, "Nie znaleziono grafiku o id " + id));
            }
            catch (Exception ex)
            {
                return(Content(HttpStatusCode.InternalServerError, "Błąd serwera"));
            }

            return(Ok(gr.Zatwierdzony));
        }
コード例 #17
0
        public IHttpActionResult Get(int id)
        {
            Models.StanowiskoToSend stanowisko = null;

            try
            {
                Models.DataBaseEntities db = new Models.DataBaseEntities();

                stanowisko = new Models.StanowiskoToSend(db.Stanowisko.First(s => s.Id == id));
            }
            catch (InvalidOperationException ex)
            {
                return(Content(HttpStatusCode.NotFound, "Nie znaleziono stanowiska o id " + id));
            }
            catch (Exception ex)
            {
                return(Content(HttpStatusCode.InternalServerError, "Błąd serwera"));
            }

            return(Ok(stanowisko));
        }
コード例 #18
0
        public IHttpActionResult List()
        {
            User = System.Web.HttpContext.Current.User;
            int user;

            int.TryParse(((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Id").Value, out user);

            ((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Admin");
            if (((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Admin").Value == "false")
            {
                return(Content(HttpStatusCode.Forbidden, "Brak uprawnień do wykonania zadania!"));
            }

            List <Models.PracownikToSend> pracownicy = new List <Models.PracownikToSend>();

            try
            {
                Models.DataBaseEntities db = new Models.DataBaseEntities();


                foreach (Models.Pracownik p in db.Pracownik)
                {
                    /*
                     * p.Haslo = "";
                     * p.Urlop = null;
                     * p.StanowiskoPracownika = null;
                     * p.DzienRoboczyPracownika = null;
                     *
                     * pracownicy.Add(p);
                     */
                    pracownicy.Add(new Models.PracownikToSend(p));
                }
            }
            catch (Exception ex)
            {
                return(Content(HttpStatusCode.InternalServerError, "Błąd serwera"));
            }

            return(Ok(pracownicy));
        }
コード例 #19
0
        public IHttpActionResult GrafikPracownika(int id, DateTime dzien)
        {
            Models.GrafikToSend grafik = null;

            try
            {
                Models.DataBaseEntities db = new Models.DataBaseEntities();
                Models.Grafik           gr = db.Grafik.Where(g => g.Zatwierdzony != null && g.Poczatek <= dzien && g.Koniec > dzien).OrderBy(g => g.Poczatek).First();

                grafik = new Models.GrafikToSend(gr, id);
            }
            catch (InvalidOperationException ex)
            {
                return(Content(HttpStatusCode.NotFound, "Nie znaleziono zatwierdzonego grafiku na dzień " + dzien.ToString("dd'-'MM'-'yyyy")));
            }
            catch (Exception ex)
            {
                return(Content(HttpStatusCode.InternalServerError, "Błąd serwera"));
            }

            return(Ok(grafik));
        }
コード例 #20
0
        public IHttpActionResult Delete(int id)
        {
            User = System.Web.HttpContext.Current.User;
            int user;

            int.TryParse(((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Id").Value, out user);

            ((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Admin");
            if (((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Admin").Value == "false")
            {
                return(Content(HttpStatusCode.Forbidden, "Brak uprawnień do wykonania zadania!"));
            }

            try
            {
                Models.DataBaseEntities db = new Models.DataBaseEntities();

                Models.Pracownik pracownik = db.Pracownik.First(p => p.Id == id);

                pracownik.Administrator = false;
                pracownik.GodzinWUmowie = 0;
                pracownik.StanowiskoPracownika.Clear();
                pracownik.Urlop.Clear();
                pracownik.DzienRoboczyPracownika.Clear();

                db.SaveChanges();
            }
            catch (InvalidOperationException ex)
            {
                return(Content(HttpStatusCode.NotFound, "Nie znaleziono pracownika o id " + id));
            }
            catch (Exception ex)
            {
                return(Content(HttpStatusCode.InternalServerError, "Błąd serwera"));
            }

            return(Ok());
        }
コード例 #21
0
        public IHttpActionResult DodajPozycje(Models.NaStanowiskuToSend naStanowisku, int grafik)
        {
            User = System.Web.HttpContext.Current.User;
            ((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Admin");
            if (((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Admin").Value == "false")
            {
                return(Content(HttpStatusCode.Forbidden, "Brak uprawnień do wykonania zadania!"));
            }

            try
            {
                Models.DataBaseEntities db = new Models.DataBaseEntities();

                Models.Grafik gr = db.Grafik.FirstOrDefault(g => g.Id == grafik);
                if (gr == null)
                {
                    return(Content(HttpStatusCode.NotFound, "Nie znaleziono grafiku o id " + grafik));
                }

                Models.Pracownik pracownik = db.Pracownik.FirstOrDefault(p => p.Id == naStanowisku.IdPracownika);
                if (pracownik == null)
                {
                    return(Content(HttpStatusCode.NotFound, "Nie znaleziono pracownika o id " + naStanowisku.IdPracownika));
                }

                Models.Stanowisko stanowisko = db.Stanowisko.FirstOrDefault(s => s.Id == naStanowisku.IdStanowiska);
                if (stanowisko == null)
                {
                    return(Content(HttpStatusCode.NotFound, "Nie znaleziono stanowiska o id " + naStanowisku.IdStanowiska));
                }

                Models.Czas godzina = gr.Czas.FirstOrDefault(g => g.Poczatek == naStanowisku.Poczatek && g.Koniec == naStanowisku.Koniec);
                if (godzina == null)
                {
                    godzina          = new Models.Czas();
                    godzina.Poczatek = naStanowisku.Poczatek;
                    godzina.Koniec   = naStanowisku.Koniec;
                    godzina.Grafik   = gr;

                    db.Czas.Add(godzina);
                }
                else
                {
                    foreach (Models.PracownikNaStanowisku pns in godzina.PracownikNaStanowisku)
                    {
                        if (pns.Pracownik.Id == naStanowisku.IdPracownika)
                        {
                            return(Content(HttpStatusCode.BadRequest, "Pracownik znajduje się już na stanowisku"));
                        }
                    }
                }

                Models.PracownikNaStanowisku prns = new Models.PracownikNaStanowisku();
                prns.Pracownik  = pracownik;
                prns.Stanowisko = stanowisko;
                prns.Czas       = godzina;

                db.PracownikNaStanowisku.Add(prns);
                db.SaveChanges();
            }
            catch (Exception ex)
            {
                return(Content(HttpStatusCode.InternalServerError, ex.ToString()));
            }

            return(Ok());
        }
コード例 #22
0
        public IHttpActionResult Patch(Models.PracownikToSend pracownik)
        {
            User = System.Web.HttpContext.Current.User;
            int user;

            int.TryParse(((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Id").Value, out user);

            ((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Admin");
            if (((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Admin").Value == "false" &&
                user != pracownik.Id)
            {
                return(Content(HttpStatusCode.Forbidden, "Brak uprawnień do wykonania zadania!"));
            }
            try
            {
                Models.DataBaseEntities db = new Models.DataBaseEntities();

                Models.Pracownik pr = db.Pracownik.First(p => p.Id == pracownik.Id);
                if (pracownik.Imie != null && pracownik.Imie.Length > 0)
                {
                    pr.Imie = pracownik.Imie;
                }
                if (pracownik.Nazwisko != null && pracownik.Nazwisko.Length > 0)
                {
                    pr.Nazwisko = pracownik.Nazwisko;
                }
                if (pracownik.Haslo != null && pracownik.Haslo.Length > 0)
                {
                    pr.Haslo = HashPassword(pracownik.Haslo);
                }
                if (pracownik.Email != null && pracownik.Email.Length > 0)
                {
                    pr.Email = pracownik.Email;
                }
                if (pracownik.GodzinWUmowie != null)
                {
                    pr.GodzinWUmowie = pracownik.GodzinWUmowie;
                }
                pr.Administrator = pracownik.Administrator;

                if (pracownik.DniRobocze != null)
                {
                    db.DzienRoboczyPracownika.RemoveRange(pr.DzienRoboczyPracownika);
                    pr.DzienRoboczyPracownika.Clear();

                    foreach (Models.DzienRoboczyPracownikaToSend drpts in pracownik.DniRobocze)
                    {
                        if (drpts.poczatek >= drpts.koniec)
                        {
                            return(Content(HttpStatusCode.BadRequest, "Godzina zakończenai musi być po godzinie rozpoczęcia!"));
                        }
                        Models.DzienRoboczyPracownika drp = new Models.DzienRoboczyPracownika();
                        drp.DzienTygodnia = db.DzienTygodnia.First(d => d.Id == drpts.dzien);
                        drp.Pracownik     = pr;
                        drp.Poczatek      = drpts.poczatek;
                        drp.Koniec        = drpts.koniec;

                        db.DzienRoboczyPracownika.Add(drp);
                    }
                }

                if (pracownik.Stanowiska != null)
                {
                    db.StanowiskoPracownika.RemoveRange(pr.StanowiskoPracownika);
                    pr.StanowiskoPracownika.Clear();

                    foreach (Models.StanowiskoPracownikaToSend spts in pracownik.Stanowiska)
                    {
                        Models.StanowiskoPracownika sp = new Models.StanowiskoPracownika();
                        sp.Pracownik  = pr;
                        sp.Stanowisko = db.Stanowisko.First(s => s.Id == spts.StanowiskoId);

                        db.StanowiskoPracownika.Add(sp);
                    }
                }

                db.SaveChanges();
            }
            catch (InvalidOperationException ex)
            {
                return(Content(HttpStatusCode.NotFound, "Nie znaleziono pracownika o id " + pracownik.Id));
            }
            catch (DbEntityValidationException e)
            {
                string wiadomosc = "";
                foreach (DbValidationError er in e.EntityValidationErrors.First().ValidationErrors)
                {
                    wiadomosc += er.ErrorMessage + "\n";
                }
                return(Content(HttpStatusCode.BadRequest, wiadomosc));
            }
            catch (Exception ex)
            {
                return(Content(HttpStatusCode.InternalServerError, "Błąd serwera"));
            }


            return(Ok());
        }
コード例 #23
0
        public IHttpActionResult Put(Models.PracownikToSend pracownik)
        {
            User = System.Web.HttpContext.Current.User;
            int user;

            int.TryParse(((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Id").Value, out user);

            ((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Admin");
            if (((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Admin").Value == "false")
            {
                return(Content(HttpStatusCode.Forbidden, "Brak uprawnień do wykonania zadania!"));
            }
            Models.Pracownik pr = new Models.Pracownik();
            try
            {
                Models.DataBaseEntities db = new Models.DataBaseEntities();

                pr.Imie          = pracownik.Imie;
                pr.Nazwisko      = pracownik.Nazwisko;
                pr.Haslo         = HashPassword(pracownik.Haslo);
                pr.Administrator = false;
                pr.GodzinWUmowie = pracownik.GodzinWUmowie;
                pr.Email         = pracownik.Email;

                if (pracownik.DniRobocze != null)
                {
                    foreach (Models.DzienRoboczyPracownikaToSend drpts in pracownik.DniRobocze)
                    {
                        Models.DzienRoboczyPracownika drp = new Models.DzienRoboczyPracownika();
                        drp.DzienTygodnia = db.DzienTygodnia.First(d => d.Id == drpts.dzien);
                        drp.Pracownik     = pr;
                        drp.Poczatek      = drpts.poczatek;
                        drp.Koniec        = drpts.koniec;

                        db.DzienRoboczyPracownika.Add(drp);
                    }
                }

                if (pracownik.Stanowiska != null)
                {
                    foreach (Models.StanowiskoPracownikaToSend spts in pracownik.Stanowiska)
                    {
                        Models.StanowiskoPracownika sp = new Models.StanowiskoPracownika();
                        sp.Pracownik  = pr;
                        sp.Stanowisko = db.Stanowisko.First(s => s.Id == spts.StanowiskoId);

                        db.StanowiskoPracownika.Add(sp);
                    }
                }

                db.Pracownik.Add(pr);

                db.SaveChanges();
            }
            catch (DbEntityValidationException e)
            {
                string wiadomosc = "";
                foreach (DbValidationError er in e.EntityValidationErrors.First().ValidationErrors)
                {
                    wiadomosc += er.ErrorMessage + "\n";
                }
                return(Content(HttpStatusCode.BadRequest, wiadomosc));
            }
            catch (Exception ex)
            {
                return(Content(HttpStatusCode.InternalServerError, "Błąd serwera"));
            }

            return(Ok(pr.Id));
        }
コード例 #24
0
        public IHttpActionResult Put(Models.UrlopToSend urlop)
        {
            User = System.Web.HttpContext.Current.User;
            int user;

            int.TryParse(((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Id").Value, out user);

            ((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Admin");
            if (((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Admin").Value == "false" &&
                user != urlop.pracownik)
            {
                return(Content(HttpStatusCode.Forbidden, "Brak uprawnień do wykonania zadania!"));
            }

            Models.Urlop ur = null;
            try
            {
                Models.DataBaseEntities db        = new Models.DataBaseEntities();
                Models.Pracownik        pracownik = db.Pracownik.First(p => p.Id == urlop.pracownik);

                DateTime dzis = DateTime.Now;
                if (urlop.poczatek > urlop.koniec)
                {
                    return(Content(HttpStatusCode.BadRequest, "Początek musi być datę wcześneijszą niż koniec!"));
                }
                if (urlop.poczatek < dzis.Date || urlop.koniec < dzis.Date)
                {
                    return(Content(HttpStatusCode.BadRequest, "Obie daty muszą być w przyszłości!"));
                }

                ur           = new Models.Urlop();
                ur.Powod     = urlop.powod;
                ur.Pracownik = pracownik;
                //ur.DzienUrlopu = new List<Models.DzienUrlopu>();

                db.Urlop.Add(ur);

                for (DateTime dt = urlop.poczatek; dt <= urlop.koniec; dt = dt.AddDays(1))
                {
                    if (pracownik.DzienRoboczyPracownika.FirstOrDefault(d => d.DzienTygodnia.Id == (int)dt.DayOfWeek) != null)
                    {
                        Models.Dzien dzien = db.Dzien.FirstOrDefault(d => d.Data == dt);
                        if (dzien == null)
                        {
                            dzien      = new Models.Dzien();
                            dzien.Data = dt;
                            db.Dzien.Add(dzien);
                        }
                        Models.DzienUrlopu du = new Models.DzienUrlopu();
                        du.Dzien = dzien;
                        du.Urlop = ur;
                        db.DzienUrlopu.Add(du);
                    }
                }


                db.SaveChanges();
            }
            catch (InvalidOperationException ex)
            {
                return(Content(HttpStatusCode.NotFound, "Nie znaleziono pracownika o id " + urlop.pracownik));
            }
            catch (Exception ex)
            {
                return(Content(HttpStatusCode.InternalServerError, "Błąd serwera"));
            }

            return(Ok(ur.Id));
        }
コード例 #25
0
        public IHttpActionResult Put(Models.StanowiskoToSend stanowisko)
        {
            User = System.Web.HttpContext.Current.User;
            int user;

            int.TryParse(((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Id").Value, out user);

            ((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Admin");
            if (((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Admin").Value == "false")
            {
                return(Content(HttpStatusCode.Forbidden, "Brak uprawnień do wykonania zadania!"));
            }

            Models.Stanowisko st = null;

            try
            {
                Models.DataBaseEntities db = new Models.DataBaseEntities();

                st = new Models.Stanowisko();

                st.Nazwa             = stanowisko.Nazwa;
                st.StanowiskoMiejsca = new List <Models.StanowiskoMiejsca>();

                db.Stanowisko.Add(st);

                foreach (Models.StanowiskoMiejscaToSend smts in stanowisko.Miejsca)
                {
                    Models.Godzina go = db.Godzina.FirstOrDefault(g => g.Poczatek == smts.Pocatek && g.Koniec == smts.Koniec && g.DzienTygodnia.Id == smts.Dzien);
                    if (go == null)
                    {
                        go               = new Models.Godzina();
                        go.Poczatek      = smts.Pocatek;
                        go.Koniec        = smts.Koniec;
                        go.DzienTygodnia = db.DzienTygodnia.First(d => d.Id == smts.Dzien % 7);

                        db.Godzina.Add(go);
                    }

                    Models.StanowiskoMiejsca sm = new Models.StanowiskoMiejsca();
                    sm.Godzina    = go;
                    sm.Maksimum   = smts.Max;
                    sm.Minimum    = smts.Min;
                    sm.Stanowisko = st;

                    db.StanowiskoMiejsca.Add(sm);
                }

                db.SaveChanges();
            }
            catch (DbEntityValidationException e)
            {
                string wiadomosc = "";
                foreach (DbValidationError er in e.EntityValidationErrors.First().ValidationErrors)
                {
                    wiadomosc += er.ErrorMessage + "\n";
                }
                return(Content(HttpStatusCode.BadRequest, wiadomosc));
            }
            catch (Exception ex)
            {
                return(Content(HttpStatusCode.InternalServerError, "Błąd serwera"));
            }

            return(Ok(st.Id));
        }
コード例 #26
0
        public IHttpActionResult Generuj(DateTime poczatek, DateTime koniec, int naGodzine)
        {
            User = System.Web.HttpContext.Current.User;
            int user;

            int.TryParse(((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Id").Value, out user);

            ((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Admin");
            if (((ClaimsIdentity)User.Identity).Claims.First(c => c.Type == "Admin").Value == "false")
            {
                return(Content(HttpStatusCode.Forbidden, "Brak uprawnień do wykonania zadania!"));
            }

            Models.Grafik grafik = null;

            try
            {
                if (TRWA_GENEROWANIE)
                {
                    return(Content(HttpStatusCode.Conflict, "Trwa Generowanie"));
                }
                TRWA_GENEROWANIE = true;

                Models.DataBaseEntities db = new Models.DataBaseEntities();

                List <Models.Pracownik>  pracownicy = db.Pracownik.Where(p => p.GodzinWUmowie > 0 && p.StanowiskoPracownika.Count() > 0).ToList();
                List <Models.Stanowisko> stanowiska = db.Stanowisko.Where(s => s.StanowiskoPracownika.Count() > 0).ToList();

                // 1 bit dla czy w pracy
                // pozostale numer stanowiska
                int dlugoscKodonu = (int)Math.Round(Math.Log(stanowiska.Count(), 2), 0, MidpointRounding.AwayFromZero);

                int    iloscPrzedzialow = (int)Math.Round(koniec.Subtract(poczatek).TotalHours *naGodzine, 0, MidpointRounding.AwayFromZero) * naGodzine;
                double przedzial        = 60 / naGodzine;

                List <double> genMin     = new List <double>();
                List <double> genMax     = new List <double>();
                List <int>    genBits    = new List <int>();
                List <int>    genDecimal = new List <int>();

                for (int i = 0; i < iloscPrzedzialow * pracownicy.Count(); i++)
                {
                    genMin.Add(0);
                    genMin.Add(0);
                    genMax.Add(1);
                    genMax.Add(stanowiska.Count() - 1);
                    genBits.Add(1);
                    genBits.Add(dlugoscKodonu);
                    genDecimal.Add(0);
                    genDecimal.Add(0);
                }

                var selection = new EliteSelection();
                //var selection = new TournamentSelection(100, true);
                var crossover = new UniformCrossover(0.5f);
                //var crossover = new ThreeParentCrossover();
                //var mutation = new ReverseSequenceMutation();
                var mutation = new FlipBitMutation();
                //var mutation = new UniformMutation(false);
                var fitness = new OcenaGrafiku(pracownicy, stanowiska, naGodzine, poczatek, koniec);

                var termination = new GeneticSharp.Domain.Terminations.OrTermination(
                    new FitnessStagnationTermination(1000), new FitnessThresholdTermination(0), new TimeEvolvingTermination(new TimeSpan(0, 5, 0)));

                var chromosome = new FloatingPointChromosome(genMin.ToArray(), genMax.ToArray(), genBits.ToArray(), genDecimal.ToArray());
                var population = new Population(1000, 10000, chromosome);


                var ga = new GeneticAlgorithm(population, fitness, selection, crossover, mutation);
                ga.Termination         = termination;
                ga.MutationProbability = 0.20f;

                ga.Start();

                var    wynik = (ga.BestChromosome as FloatingPointChromosome).ToFloatingPoints();
                double?x     = (ga.BestChromosome as FloatingPointChromosome).Fitness;

                DateTime czas = poczatek;

                grafik          = new Models.Grafik();
                grafik.Poczatek = poczatek;
                grafik.Koniec   = koniec;

                db.Grafik.Add(grafik);

                int j = 0;
                while (czas < koniec)
                {
                    Models.Czas cz = new Models.Czas();

                    foreach (Models.Pracownik pr in pracownicy)
                    {
                        if (wynik[j] == 1)
                        {
                            Models.PracownikNaStanowisku pns = new Models.PracownikNaStanowisku();
                            pns.Pracownik  = pr;
                            pns.Stanowisko = stanowiska[(int)wynik[j + 1] % stanowiska.Count()];
                            pns.Czas       = cz;

                            db.PracownikNaStanowisku.Add(pns);
                        }
                        j += 2;
                    }
                    if (cz.PracownikNaStanowisku.Count() > 0)
                    {
                        cz.Grafik   = grafik;
                        cz.Poczatek = czas;
                        cz.Koniec   = czas.AddMinutes(przedzial);
                        db.Czas.Add(cz);
                    }
                    czas = czas.AddMinutes(przedzial);
                }

                db.SaveChanges();
            }
            catch (Exception ex)
            {
                return(Content(HttpStatusCode.InternalServerError, ex.ToString()));
            }
            TRWA_GENEROWANIE = false;

            return(Ok(grafik.Id));
        }