Ejemplo n.º 1
0
        public async Task <SimpleResponse> Post(IFormFile file, string name)
        {
            MyImage image_bd = await _db.images.Where(i => i.name == name).FirstOrDefaultAsync();

            if (image_bd != null)
            {
                return(new SimpleResponse {
                    error = "Такая картинка уже есть"
                });
            }
            MyImage image = new MyImage();

            image.name = name;
            using (var binaryReader = new BinaryReader(file.OpenReadStream()))
            {
                image.file = binaryReader.ReadBytes((int)file.Length);
            }
            await _db.images.AddAsync(image);

            await _db.SaveChangesAsync();

            return(new SimpleResponse {
                message = name
            });
        }
Ejemplo n.º 2
0
        public async Task <ActionResult <SimpleResponse> > UpdateState(Ticket ticket)
        {
            Ticket ticket_db = await _db.tikets
                               .Where(t => t.id == ticket.id).FirstOrDefaultAsync();

            if (ticket_db != null)
            {
                if (ticket.state_id == ticket_db.state_id)
                {
                    return(new SimpleResponse {
                        error = "Заявка уже в этом состоянии"
                    });
                }

                DateTime date_time = DateTime.Now;
                date_time = date_time.AddHours(7);
                string date = date_time.ToString("yyyy-MM-dd HH:mm:ss");
                await _db.ticket_historys.AddAsync(
                    new TicketHistory
                {
                    ticket_id           = ticket.id,
                    ticket_state_old_id = ticket_db.state_id,
                    ticket_state_new_id = ticket.state_id,
                    date = date,
                });

                ticket_db.state_id = ticket.state_id;

                List <Ticket> dublicates = await _db.ticket_dublicate
                                           .Where(d => d.main_tiket == ticket.id)
                                           .Join(_db.tikets, d => d.tiket, t => t.id,
                                                 (d, t) => t).ToListAsync();

                foreach (Ticket t in dublicates)
                {
                    await _db.ticket_historys.AddAsync(
                        new TicketHistory
                    {
                        ticket_id           = t.id,
                        ticket_state_old_id = t.state_id,
                        ticket_state_new_id = ticket.state_id,
                        date = date,
                    });

                    t.state_id = ticket.state_id;
                }

                await _db.SaveChangesAsync();

                return(new SimpleResponse {
                    message = "Данные обновлены удачно"
                });
            }
            return(new SimpleResponse {
                error = "Заявка не найдена"
            });
        }
Ejemplo n.º 3
0
        public async Task <SimpleResponse> Post([FromForm] PhotoPostRequest request)
        {
            MobileUser user_db = await _db.mobile_users
                                 .Where(u => u.token == request.user_token)
                                 .FirstOrDefaultAsync();

            if (user_db == null)
            {
                return(new SimpleResponse {
                    error = "Пользователь не найден"
                });
            }
            Ticket ticket_db = await _db.tikets
                               .Where(t => t.id == request.ticket_id)
                               .FirstOrDefaultAsync();

            if (ticket_db == null)
            {
                return(new SimpleResponse {
                    error = "Заявка не найдена"
                });
            }

            int count = await _db.photos
                        .Where(p => p.ticket == request.ticket_id)
                        .CountAsync();

            /*if(count > 15)
             * {
             *  return new SimpleResponse{error = "Превышен лимит заявок"};
             * }*/

            Photo photo = new Photo();

            photo.ticket = request.ticket_id;
            using (var binaryReader = new BinaryReader(request.photo.OpenReadStream()))
            {
                photo.file = binaryReader.ReadBytes((int)request.photo.Length);
            }
            await _db.photos.AddAsync(photo);

            Photo mini = new Photo {
                mini = true, file = resize(photo.file), ticket = photo.ticket
            };
            await _db.photos.AddAsync(mini);

            await _db.SaveChangesAsync();

            return(new SimpleResponse {
                message = "Фотография прикреплена к заявке"
            });
        }
Ejemplo n.º 4
0
        public async Task <ActionResult <SimpleResponse> > CreateAccount(WebUser user)
        {
            string  hash_pass = PostgreDataBase.hasher(user.pass);
            WebUser user_db   = await
                                _db.users
                                .Where(u => u.login == user.login)
                                .FirstOrDefaultAsync();

            if (user_db == null)
            {
                await _db.users.AddAsync(
                    new WebUser { login = user.login, pass = hash_pass, email = "" });

                await _db.SaveChangesAsync();
                await Authenticate(user.login);

                return(new SimpleResponse {
                    message = "Аккаунт создан успешно"
                });
            }
            return(new SimpleResponse {
                error = "Пользователь с таким логином или почтой уже существует"
            });
        }
Ejemplo n.º 5
0
        public async Task <ActionResult <SimpleResponse> > QRNew(QRTrafficLightTicketRequest mobile_ticket)
        {
            var traffic_light = await _db.traffic_lights
                                .Where(t => t.hash_code == mobile_ticket.traffic_light_hash_code)
                                .FirstOrDefaultAsync();

            if (traffic_light == null)
            {
                return(new SimpleResponse {
                    error = "Светофор не найден"
                });
            }

            // Костыль заджоинил район
            var _district = await _db.districts
                            .Where(d => d.id == traffic_light.district_id).FirstOrDefaultAsync();

            traffic_light.district = _district;

            MobileUser user = await _db.mobile_users
                              .Where(u => u.token == mobile_ticket.user_token).FirstOrDefaultAsync();

            if (user == null)
            {
                return(new SimpleResponse {
                    error = "Пользователь не найден"
                });
            }

            DateTime date_time = DateTime.Now;

            date_time = date_time.AddHours(7);
            string date = date_time.ToString("yyyy-MM-dd HH:mm:ss");

            int ticket_user_today = await _db.tikets
                                    .Where(
                t => t.mobile_token == mobile_ticket.user_token &&
                t.date_add.Substring(0, 10) == date.Substring(0, 10)
                ).CountAsync();

            //ALARM
            ticket_user_today = 0;
            //ALARM

            if (ticket_user_today < 5)
            {
                if (traffic_light.district == null)
                {
                    return(new SimpleResponse {
                        error = "Район светофора не найден"
                    });
                }

                string desc = mobile_ticket.description;
                if (desc == null)
                {
                    desc = "Светофор не работает";
                }

                Ticket new_ticket =
                    new Ticket
                {
                    state_id     = 1,
                    type_id      = 1,
                    description  = desc,
                    date_add     = date,
                    mobile_token = mobile_ticket.user_token,
                    long_        = traffic_light.long_,
                    lat          = traffic_light.lat,
                };

                await _db.tikets.AddAsync(new_ticket);

                await _db.SaveChangesAsync();

                await _db.ticket_traffic_lights.AddAsync(
                    new TicketTrafficLight
                {
                    ticket_id        = new_ticket.id,
                    traffic_light_id = traffic_light.id,
                }
                    );

                await _db.SaveChangesAsync();

                return(new SimpleResponse {
                    message = new_ticket.id + ""
                });
            }
            else
            {
                return(new SimpleResponse {
                    error = "Превышено кол-во заявок на сегодня"
                });
            }
        }