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));
        }
Пример #3
0
        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);
        }
Пример #4
0
        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));
        }
Пример #6
0
        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."));
            }
        }
Пример #7
0
        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));
        }
Пример #10
0
        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);
        }