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 }); }
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 = "Заявка не найдена" }); }
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 = "Фотография прикреплена к заявке" }); }
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 = "Пользователь с таким логином или почтой уже существует" }); }
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 = "Превышено кол-во заявок на сегодня" }); } }