public async Task <IActionResult> PutVersaoCliente(string id_v, string id_c, VersaoCliente versaoCliente) { if (id_v != versaoCliente.Versao_ID && id_c != versaoCliente.Cliente_ID) { return(BadRequest()); } _context.Entry(versaoCliente).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!VersaoClienteExists(id_v, id_c)) { return(NotFound()); } else { throw; } } return(NoContent()); }
public async Task <ActionResult <Cliente> > PostCliente(Cliente cliente) { cliente.Data_criacao = DateTime.Now; cliente.Data_ultima_alteracao = DateTime.Now; List <Grupo> grupos = _context.Grupos.Where(g => g.Id == cliente.Grupo).ToList(); if (grupos.Count == 0) { return(NotFound()); //grupo nao existe } List <Versao> versoes = _context.Versoes.Where(v => v.Id == cliente.Versao_atual).ToList(); if (versoes.Count == 0) { return(NotFound()); //versao nao existe } _context.Clientes.Add(cliente); await _context.SaveChangesAsync(); DateTime dateTime = DateTime.Now; DateTime horaData = new DateTime(dateTime.Year, dateTime.Month, dateTime.Day, Int32.Parse(grupos[0].Hora_distribuicao.Split(":")[0]), Int32.Parse(grupos[0].Hora_distribuicao.Split(":")[1]), 0); //hora de distribuicao if (grupos.Count > 0) { if (dateTime.Hour < Int32.Parse(grupos[0].Hora_distribuicao.Split(":")[0]) || (dateTime.Hour == Int32.Parse(grupos[0].Hora_distribuicao.Split(":")[0]) && dateTime.Minute < Int32.Parse(grupos[0].Hora_distribuicao.Split(":")[1]))) { horaData = new DateTime(dateTime.Year, dateTime.Month, dateTime.Day, Int32.Parse(grupos[0].Hora_distribuicao.Split(":")[0]), Int32.Parse(grupos[0].Hora_distribuicao.Split(":")[1]), 0); } else { horaData = new DateTime(dateTime.Year, dateTime.Month, dateTime.Day + 1, Int32.Parse(grupos[0].Hora_distribuicao.Split(":")[0]), Int32.Parse(grupos[0].Hora_distribuicao.Split(":")[1]), 0); } } try { //adiciona versao e cliente à tabela VersaoCliente onde é guarda todas as versoes que cada cliente tem acesso VersaoCliente versaoCliente = new VersaoCliente { Cliente_ID = cliente.Id, Versao_ID = cliente.Versao_atual, Data_distribuicao = horaData }; _context.VersoesClientes.Add(versaoCliente); await _context.SaveChangesAsync(); } catch (Exception) { return(NotFound()); //ligacao ja existe? } return(CreatedAtAction("GetCliente", new { id = cliente.Id }, cliente)); }
public ActionResult <VersaoCliente> GetVersaoCliente(string id_c, string id_v) { if (!VersaoClienteExists(id_c, id_v)) { return(NotFound()); } using IDbConnection connection = _dapperConnections.getLicencasConnection(); VersaoCliente versaoCliente = connection.Query <VersaoCliente>("SELECT * FROM VersoesClientes WHERE Cliente_ID LIKE @Cliente_ID AND Versao_ID LIKE @Versao_ID", new { Cliente_ID = id_c, Versao_ID = id_v }).FirstOrDefault(); return(versaoCliente); }
public ActionResult <VersaoCliente> PostVersaoCliente(VersaoCliente versaoCliente) { if (VersaoClienteExists(versaoCliente.Cliente_ID.ToString(), versaoCliente.Versao_ID)) { PutVersaoCliente(versaoCliente.Cliente_ID.ToString(), versaoCliente.Versao_ID, versaoCliente); return(Ok("Ok. VersaoCliente atualizada.")); } using IDbConnection connection = _dapperConnections.getLicencasConnection(); connection.Query("INSERT INTO VersoesClientes(Cliente_ID, Versao_ID, Data_distribuicao) VALUES(@Cliente_ID, @Versao_ID, @Data_distribuicao)", new { versaoCliente.Cliente_ID, versaoCliente.Versao_ID, versaoCliente.Data_distribuicao }); return(Ok("Ok. VersaoCliente inserida.")); }
public async Task <ActionResult <VersaoCliente> > PostVersaoCliente(VersaoCliente versaoCliente) { _context.VersoesClientes.Add(versaoCliente); try { await _context.SaveChangesAsync(); } catch (DbUpdateException) { if (VersaoClienteExists(versaoCliente.Versao_ID, versaoCliente.Cliente_ID)) { return(Conflict()); } else { throw; } } return(CreatedAtAction("GetVersaoCliente", new { id_v = versaoCliente.Versao_ID, id_c = versaoCliente.Cliente_ID }, versaoCliente)); }
public IActionResult PutVersaoCliente(string id_c, string id_v, VersaoCliente versaoCliente) { if (!string.Equals(id_c, versaoCliente.Cliente_ID.ToString(), StringComparison.CurrentCultureIgnoreCase) || !string.Equals(id_v, versaoCliente.Versao_ID.ToString(), StringComparison.CurrentCultureIgnoreCase)) { return(BadRequest()); } if (!VersaoClienteExists(id_c, id_v)) { return(NotFound()); } using IDbConnection connection = _dapperConnections.getLicencasConnection(); try { connection.Query("UPDATE VersoesClientes SET Data_distribuicao = @Data_distribuicao WHERE Cliente_ID LIKE @Cliente_ID AND Versao_ID LIKE @Versao_ID", new { versaoCliente.Data_distribuicao, versaoCliente.Cliente_ID, versaoCliente.Versao_ID }); return(Ok("Ok. VersaoCliente atualizada.")); } catch (Exception) { return(Conflict("Conflito de valores. Update da versaoCliente falhou.")); } }
public ActionResult <VersaoCliente> PostDistribuirVersaoCliente(VersaoCliente versaoCliente, string hora) { //verifica se a hora é valida if (hora != "" && hora != null) { if (hora.Split(":").Length != 2) { return(BadRequest()); } else if (hora.Split(":")[0].Length == 0 || hora.Split(":")[1].Length == 0) { return(BadRequest()); } else if (!int.TryParse(hora.Split(":")[0], out int n) || !int.TryParse(hora.Split(":")[1], out int m)) { return(BadRequest()); } else if (Int16.Parse(hora.Split(":")[0]) < 0 || Int16.Parse(hora.Split(":")[0]) > 23 || Int16.Parse(hora.Split(":")[1]) < 0 || Int16.Parse(hora.Split(":")[1]) > 59) { return(BadRequest()); } } using IDbConnection connection = _dapperConnections.getLicencasConnection(); Cliente cliente = connection.Query <Cliente>("SELECT * FROM Terceiros WHERE ID LIKE @Id", new { Id = versaoCliente.Cliente_ID }).FirstOrDefault(); if (cliente == null) { return(NotFound()); } //verificar se o grupo existe Grupo grupo = connection.Query <Grupo>("SELECT * FROM Grupos WHERE Id LIKE @ID", new { ID = cliente.Grupo }).FirstOrDefault(); if (grupo == null) { return(NotFound()); //grupo nao existe } //verificar se a versao existe Versao versao = connection.Query <Versao>("SELECT * FROM Versoes WHERE Id LIKE @ID", new { ID = versaoCliente.Versao_ID }).FirstOrDefault(); if (versao == null) { return(NotFound()); //versao nao existe } DateTime dateTimeNow = DateTime.Now; DateTime horaDataDistribuicao; if (hora == null || hora == "") { horaDataDistribuicao = new DateTime(dateTimeNow.Year, dateTimeNow.Month, dateTimeNow.Day, Int32.Parse(grupo.Hora_distribuicao.Split(":")[0]), Int32.Parse(grupo.Hora_distribuicao.Split(":")[1]), 0); if (dateTimeNow.Hour > Int32.Parse(grupo.Hora_distribuicao.Split(":")[0]) || (dateTimeNow.Hour == Int32.Parse(grupo.Hora_distribuicao.Split(":")[0]) && dateTimeNow.Minute >= Int32.Parse(grupo.Hora_distribuicao.Split(":")[1]))) { horaDataDistribuicao = new DateTime(dateTimeNow.Year, dateTimeNow.Month, dateTimeNow.Day + 1, Int32.Parse(grupo.Hora_distribuicao.Split(":")[0]), Int32.Parse(grupo.Hora_distribuicao.Split(":")[1]), 0); } } else { horaDataDistribuicao = new DateTime(dateTimeNow.Year, dateTimeNow.Month, dateTimeNow.Day, Int32.Parse(hora.Split(":")[0]), Int32.Parse(hora.Split(":")[1]), 0); if (dateTimeNow.Hour > Int32.Parse(hora.Split(":")[0]) || (dateTimeNow.Hour == Int32.Parse(hora.Split(":")[0]) && dateTimeNow.Minute >= Int32.Parse(hora.Split(":")[1]))) { horaDataDistribuicao = new DateTime(dateTimeNow.Year, dateTimeNow.Month, dateTimeNow.Day + 1, Int32.Parse(hora.Split(":")[0]), Int32.Parse(hora.Split(":")[1]), 0); } } versaoCliente.Data_distribuicao = horaDataDistribuicao; if (VersaoClienteExists(versaoCliente.Cliente_ID.ToString(), versaoCliente.Versao_ID)) { PutVersaoCliente(versaoCliente.Cliente_ID.ToString(), versaoCliente.Versao_ID, versaoCliente); return(Ok("Ok. VersaoCliente atualizada.")); } connection.Query("INSERT INTO VersoesClientes(Cliente_ID, Versao_ID, Data_distribuicao) VALUES(@Cliente_ID, @Versao_ID, @Data_distribuicao)", new { versaoCliente.Cliente_ID, versaoCliente.Versao_ID, versaoCliente.Data_distribuicao }); return(Ok("Ok. VersaoCliente inserida.")); }
public async Task <IActionResult> PutCliente(string id, Cliente cliente, string hora) { if (hora == "" || hora == null) { cliente.Data_ultima_alteracao = DateTime.Now; if (id != cliente.Id) { return(BadRequest()); } List <Grupo> grupos = _context.Grupos.Where(g => g.Id == cliente.Grupo).ToList(); if (grupos.Count == 0) { return(NotFound()); //grupo nao existe } List <Versao> versoes = _context.Versoes.Where(v => v.Id == cliente.Versao_atual).ToList(); if (versoes.Count == 0) { return(NotFound()); //versao nao existe } _context.Entry(cliente).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!ClienteExists(id)) { return(NotFound()); } else { throw; } } DateTime dateTime = DateTime.Now; DateTime horaData = new DateTime(dateTime.Year, dateTime.Month, dateTime.Day, Int32.Parse(grupos[0].Hora_distribuicao.Split(":")[0]), Int32.Parse(grupos[0].Hora_distribuicao.Split(":")[1]), 0); //hora de distribuicao if (grupos.Count > 0) { if (dateTime.Hour < Int32.Parse(grupos[0].Hora_distribuicao.Split(":")[0]) || (dateTime.Hour == Int32.Parse(grupos[0].Hora_distribuicao.Split(":")[0]) && dateTime.Minute < Int32.Parse(grupos[0].Hora_distribuicao.Split(":")[1]))) { horaData = new DateTime(dateTime.Year, dateTime.Month, dateTime.Day, Int32.Parse(grupos[0].Hora_distribuicao.Split(":")[0]), Int32.Parse(grupos[0].Hora_distribuicao.Split(":")[1]), 0); } else { horaData = new DateTime(dateTime.Year, dateTime.Month, dateTime.Day + 1, Int32.Parse(grupos[0].Hora_distribuicao.Split(":")[0]), Int32.Parse(grupos[0].Hora_distribuicao.Split(":")[1]), 0); } } List <VersaoCliente> versoesClientes = _context.VersoesClientes.Where(vc => vc.Cliente_ID == id && vc.Versao_ID == cliente.Versao_atual).ToList(); if (versoesClientes.Count > 0) { return(Ok("Versao_ja_foi_distribuida_para_este_cliente")); } try { //adiciona versao e cliente à tabela VersaoCliente onde é guarda todas as versoes que cada cliente tem acesso VersaoCliente versaoCliente = new VersaoCliente { Cliente_ID = cliente.Id, Versao_ID = cliente.Versao_atual, Data_distribuicao = horaData }; _context.VersoesClientes.Add(versaoCliente); await _context.SaveChangesAsync(); } catch (Exception) { } return(NoContent()); } else { cliente.Data_ultima_alteracao = DateTime.Now; if (id != cliente.Id) { return(BadRequest()); } List <Grupo> grupos = _context.Grupos.Where(g => g.Id == cliente.Grupo).ToList(); if (grupos.Count == 0) { return(NotFound()); //grupo nao existe } List <Versao> versoes = _context.Versoes.Where(v => v.Id == cliente.Versao_atual).ToList(); if (versoes.Count == 0) { return(NotFound()); //versao nao existe } _context.Entry(cliente).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!ClienteExists(id)) { return(NotFound()); } else { throw; } } DateTime dateTime = DateTime.Now; DateTime horaData = new DateTime(dateTime.Year, dateTime.Month, dateTime.Day, Int32.Parse(hora.Split(":")[0]), Int32.Parse(hora.Split(":")[1]), 0); //hora de distribuicao if (grupos.Count > 0) { if (dateTime.Hour < Int32.Parse(hora.Split(":")[0]) || (dateTime.Hour == Int32.Parse(hora.Split(":")[0]) && dateTime.Minute < Int32.Parse(hora.Split(":")[1]))) { horaData = new DateTime(dateTime.Year, dateTime.Month, dateTime.Day, Int32.Parse(hora.Split(":")[0]), Int32.Parse(hora.Split(":")[1]), 0); } else { horaData = new DateTime(dateTime.Year, dateTime.Month, dateTime.Day + 1, Int32.Parse(hora.Split(":")[0]), Int32.Parse(hora.Split(":")[1]), 0); } } try { //adiciona versao e cliente à tabela VersaoCliente onde é guarda todas as versoes que cada cliente tem acesso VersaoCliente versaoCliente = new VersaoCliente { Cliente_ID = cliente.Id, Versao_ID = cliente.Versao_atual, Data_distribuicao = horaData }; _context.VersoesClientes.Add(versaoCliente); await _context.SaveChangesAsync(); } catch (Exception) { return(NotFound()); //ligacao ja existe? } return(NoContent()); } }
public async Task <ActionResult <VersaoClienteIDS> > PostDistribuirVersaoCliente(VersaoClienteIDS versaoClienteIDS, string hora) //public async Task PostDistribuirVersaoClienteAsync(VersaoClienteIDS versaoClienteIDS, string hora) { var cliente = await _context.Clientes.FindAsync(versaoClienteIDS.Cliente_ID); if (cliente == null) { return(NotFound()); } else { //Console.WriteLine(cliente.Nome); } var versao = await _context.Versoes.FindAsync(versaoClienteIDS.Versao_ID); if (versao == null) { return(NotFound()); } else { //Console.WriteLine(versao.Tag_name); } var grupo = await _context.Grupos.FindAsync(cliente.Grupo); if (grupo == null) { return(NotFound()); } else { //Console.WriteLine(grupo.Nome); //Console.WriteLine(grupo.Hora_distribuicao); } DateTime dateTime = DateTime.Now; if (hora == "" || hora == null) { Console.WriteLine("nao recebeu hora: " + grupo.Hora_distribuicao); if (dateTime.Hour < Int32.Parse(grupo.Hora_distribuicao.Split(":")[0]) || (dateTime.Hour == Int32.Parse(grupo.Hora_distribuicao.Split(":")[0]) && dateTime.Minute < Int32.Parse(grupo.Hora_distribuicao.Split(":")[1]))) { dateTime = new DateTime(dateTime.Year, dateTime.Month, dateTime.Day, Int32.Parse(grupo.Hora_distribuicao.Split(":")[0]), Int32.Parse(grupo.Hora_distribuicao.Split(":")[1]), 0); } else { dateTime = new DateTime(dateTime.Year, dateTime.Month, dateTime.Day + 1, Int32.Parse(grupo.Hora_distribuicao.Split(":")[0]), Int32.Parse(grupo.Hora_distribuicao.Split(":")[1]), 0); } } else { Console.WriteLine("hora recebida: " + hora); if (dateTime.Hour < Int32.Parse(hora.Split(":")[0]) || (dateTime.Hour == Int32.Parse(hora.Split(":")[0]) && dateTime.Minute < Int32.Parse(hora.Split(":")[1]))) { dateTime = new DateTime(dateTime.Year, dateTime.Month, dateTime.Day, Int32.Parse(hora.Split(":")[0]), Int32.Parse(hora.Split(":")[1]), 0); } else { dateTime = new DateTime(dateTime.Year, dateTime.Month, dateTime.Day + 1, Int32.Parse(hora.Split(":")[0]), Int32.Parse(hora.Split(":")[1]), 0); } } Console.WriteLine("data de distribuicao: " + dateTime); VersaoCliente versaoCliente = new VersaoCliente { Cliente_ID = versaoClienteIDS.Cliente_ID, Versao_ID = versaoClienteIDS.Versao_ID, Data_distribuicao = dateTime }; Console.WriteLine("\n" + versaoCliente.Cliente_ID + "\n" + versaoCliente.Versao_ID + "\n" + versaoCliente.Data_distribuicao); _context.VersoesClientes.Add(versaoCliente); try { await _context.SaveChangesAsync(); } catch (DbUpdateException) { if (VersaoClienteExists(versaoCliente.Versao_ID, versaoCliente.Cliente_ID)) { return(Conflict()); } else { throw; } } return(CreatedAtAction("GetVersaoCliente", new { id_v = versaoCliente.Versao_ID, id_c = versaoCliente.Cliente_ID }, versaoCliente)); }
public ActionResult<Cliente> PostCliente(Cliente cliente) { //todo - falta inserir data de criacao e data de ultima altereacao using IDbConnection connection = _dapperConnections.getLicencasConnection(); //verificar se o grupo existe Grupo grupo = connection.Query<Grupo>("SELECT * FROM Grupos WHERE Id LIKE @ID", new { ID = cliente.Grupo }).FirstOrDefault(); if (grupo == null) return NotFound(); //grupo nao existe //verificar se a versao existe if (cliente.Versao_atual != null) { Versao versao = connection.Query<Versao>("SELECT * FROM Versoes WHERE Id LIKE @ID", new { ID = cliente.Versao_atual }).FirstOrDefault(); if (versao == null) return NotFound(); //versao nao existe } //adicionar cliente a base de dados try { List<Guid> old_ids = connection.Query<Guid>("SELECT ID FROM Terceiros").ToList(); connection.Query("INSERT INTO Terceiros(Classe, Terceiro, Nome, Morada, Localidade, CPostal, email, Telefone, Fax, NIF, obs, Grupo, Versao_atual, Contrato_assistencia, Data_criacao)" + "VALUES(@Classe, @Terceiro, @Nome, @Morada, @Localidade, @CPostal, @email, @Telefone, @Fax, @NIF, @obs, @Grupo, @Versao_atual, @Contrato_assistencia, @Data_criacao)", new { cliente.Classe, cliente.Terceiro, cliente.Nome, cliente.Morada, cliente.Localidade, cliente.CPostal, email = cliente.Email, cliente.Telefone, cliente.Fax, cliente.NIF, obs = cliente.Obs, cliente.Grupo, cliente.Versao_atual, cliente.Contrato_assistencia, Data_criacao = DateTime.Now }); cliente.Id = connection.Query<Guid>("SELECT ID FROM Terceiros").Except(old_ids).FirstOrDefault(); } catch (Exception) { return Conflict("Conflito de valores. Insert do cliente falhou."); } // if (cliente.Versao_atual != null) { DateTime dateTimeNow = DateTime.Now; DateTime horaDataDistribuicao = new DateTime(dateTimeNow.Year, dateTimeNow.Month, dateTimeNow.Day, Int32.Parse(grupo.Hora_distribuicao.Split(":")[0]), Int32.Parse(grupo.Hora_distribuicao.Split(":")[1]), 0); //se hora de distribuicao ja tiver passado nesse dia, muda pra o dia seguinte if (dateTimeNow.Hour > Int32.Parse(grupo.Hora_distribuicao.Split(":")[0]) || (dateTimeNow.Hour == Int32.Parse(grupo.Hora_distribuicao.Split(":")[0]) && dateTimeNow.Minute >= Int32.Parse(grupo.Hora_distribuicao.Split(":")[1]))) { horaDataDistribuicao = new DateTime(dateTimeNow.Year, dateTimeNow.Month, dateTimeNow.Day + 1, Int32.Parse(grupo.Hora_distribuicao.Split(":")[0]), Int32.Parse(grupo.Hora_distribuicao.Split(":")[1]), 0); } //adiciona versao e cliente à tabela VersaoCliente onde é guarda todas as versoes que cada cliente tem acesso try { VersaoCliente versaoCliente = new VersaoCliente { Cliente_ID = cliente.Id, Versao_ID = cliente.Versao_atual, Data_distribuicao = horaDataDistribuicao }; connection.Query("INSERT INTO VersoesClientes(Cliente_ID, Versao_ID, Data_distribuicao) VALUES(@Cliente_ID, @Versao_ID, @Data_distribuicao)", new { Cliente_ID = cliente.Id, Versao_ID = cliente.Versao_atual, Data_distribuicao = horaDataDistribuicao }); return Ok("ok"); } catch (Exception) { return Conflict("Distribuicao da versao nao foi guardada."); } } return Ok(cliente); }