Ejemplo n.º 1
0
        public string CadastrarEvento(EventoViewModel evento, List <Foto> fotos)
        {
            try
            {
                if (ValidaDadosDeEntrada(evento) != "")
                {
                    return(JsonConvert.SerializeObject(new { code = 400, message = ValidaDadosDeEntrada(evento) }));
                }
                else
                {
                    bool   podeAdicionar = true;
                    Evento ev            = new Evento();
                    evento.Latitude  = evento.Latitude.Replace(".", ",");
                    evento.Longitude = evento.Longitude.Replace(".", ",");
                    evento.Ativo     = false;
                    evento.Aprovado  = null;

                    var eventoService         = Mapper.Map <EventoViewModel, Evento>(evento);
                    var retornoConsultaEvento = VerificaSeEventoJaExiste(eventoService);

                    foreach (var v in retornoConsultaEvento)
                    {
                        if (
                            podeAdicionar &&
                            (eventoService.DataHoraInicio <= v.DataHoraInicio && eventoService.DataHoraFim <= v.DataHoraInicio) ||
                            (eventoService.DataHoraInicio >= v.DataHoraFim && eventoService.DataHoraFim >= v.DataHoraFim)
                            )
                        {
                            podeAdicionar = true;
                        }
                        else
                        {
                            ev            = v;
                            podeAdicionar = false;
                        }
                    }

                    if (podeAdicionar)
                    {
                        _eventoService.Add(eventoService);
                        int i = 0;

                        try
                        {
                            if (fotos != null)
                            {
                                foreach (var f in fotos)
                                {
                                    if (!string.IsNullOrEmpty(f.Imagem))
                                    {
                                        var fot = new Foto();

                                        //int inicio = f.Imagem.IndexOf(",");
                                        var nomeImagem = eventoService.EventoId.ToString() + eventoService.NomeEvento + i.ToString() + ".jpg";

                                        MD5 md5 = System.Security.Cryptography.MD5.Create();

                                        byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(nomeImagem);
                                        byte[] hash       = md5.ComputeHash(inputBytes);

                                        StringBuilder sb = new StringBuilder();
                                        for (int z = 0; z < hash.Length; z++)
                                        {
                                            sb.Append(hash[z].ToString("X2"));
                                        }

                                        var nomeCriptografado = sb.ToString();

                                        //if (ConvertStringtoImage(f.Imagem.Substring(inicio + 1), nomeCriptografado))
                                        if (ConvertStringtoImage(f.Imagem, nomeCriptografado))
                                        {
                                            fot.Imagem   = nomeCriptografado;
                                            fot.Tipo     = 1;
                                            fot.EventoId = eventoService.EventoId;

                                            _fotoService.Add(fot);
                                        }
                                        else
                                        {
                                            var evto = _eventoService.GetById(eventoService.EventoId);

                                            if (evto != null)
                                            {
                                                var fo = _fotoService.GetAll().Where(ft => ft.EventoId == evto.EventoId);

                                                foreach (var fto in fo)
                                                {
                                                    _fotoService.Remove(fto);
                                                }

                                                _eventoService.Remove(evto);
                                            }

                                            return(JsonConvert.SerializeObject(new { code = 400, message = "Houve um erro ao enviar as fotos do local do evento e por isso o mesmo não foi cadastrado. Por favor tente novamente." }));
                                        }

                                        i++;
                                    }
                                }
                            }
                        }
                        catch
                        {
                            var evto = _eventoService.GetById(eventoService.EventoId);

                            if (evto != null)
                            {
                                var fot = _fotoService.GetAll().Where(f => f.EventoId == evto.EventoId);

                                foreach (var f in fot)
                                {
                                    _fotoService.Remove(f);
                                }

                                _eventoService.Remove(evto);
                            }

                            return(JsonConvert.SerializeObject(new { code = 400, message = "Houve um erro ao enviar as fotos do local do evento e por isso o mesmo não foi cadastrado. Por favor tente novamente." }));
                        }
                        return(JsonConvert.SerializeObject(new { code = 200, message = "Evento cadastrado com sucesso. Aguarde a aprovação.", id = eventoService.EventoId }));
                    }
                    else
                    {
                        return(JsonConvert.SerializeObject(new { code = 400, message = "Desculpe, mas já existe um evento cadastrado neste local para este horário.", retornoEvento = ev }));
                    }
                }
            }
            catch
            {
                return(JsonConvert.SerializeObject(new { code = 400, message = "Erro no cadastro. Por favor, tente novamente." }));
            }
        }
        public string CadastrarVaga(VagaViewModel vaga, int quantidade, List <Foto> fotos)
        {
            try
            {
                if (ValidaDadosDeEntrada(vaga) != "")
                {
                    return(JsonConvert.SerializeObject(new { code = 400, message = ValidaDadosDeEntrada(vaga) }));
                }
                else
                {
                    vaga.Ativo  = false;
                    vaga.Aceita = null;

                    if (!string.IsNullOrEmpty(vaga.PrecoMensal))
                    {
                        vaga.PrecoMensal = vaga.PrecoMensal.Replace(".", ",");
                    }
                    if (!string.IsNullOrEmpty(vaga.PrecoDiaria))
                    {
                        vaga.PrecoDiaria = vaga.PrecoDiaria.Replace(".", ",");
                    }
                    if (!string.IsNullOrEmpty(vaga.PrecoAvulso))
                    {
                        vaga.PrecoAvulso = vaga.PrecoAvulso.Replace(".", ",");
                    }
                    if (!string.IsNullOrEmpty(vaga.AposPrimeiraHora))
                    {
                        vaga.AposPrimeiraHora = vaga.AposPrimeiraHora.Replace(".", ",");
                    }

                    var vagaService = Mapper.Map <VagaViewModel, Vaga>(vaga);

                    var dadosBancario = _dadosBancarioService.GetByIdUser(vagaService.UsuarioId);

                    if (dadosBancario.Count == 0)
                    {
                        var ga = _garagemService.GetById(vagaService.GaragemId);
                        ga.Vagas = _vagaService.GetByIdGarage(ga.GaragemId);

                        if (ga.Vagas.Count() == 0)
                        {
                            _garagemService.Remove(ga);
                        }
                        return(JsonConvert.SerializeObject(new { code = 400, message = "Não foi possível realizar o cadastro da vaga, é necessário que cadastre seus dados bancários." }));
                    }

                    if (
                        vagaService.PrecoAvulso == 0 &&
                        vagaService.PrecoMensal == 0 &&
                        vagaService.PrecoDiaria == 0 &&
                        vagaService.Mensal == false &&
                        vagaService.Avulso == false &&
                        vagaService.Diaria == false
                        )
                    {
                        var ga = _garagemService.GetById(vagaService.GaragemId);
                        ga.Vagas = _vagaService.GetByIdGarage(ga.GaragemId);

                        if (ga.Vagas.Count() == 0)
                        {
                            _garagemService.Remove(ga);
                        }
                        return(JsonConvert.SerializeObject(new { code = 400, message = "Favor informar ao menos 1 categoria de aluguel e o valor da locação desta categoria." }));
                    }

                    if (vagaService.Mensal == true && vagaService.PrecoMensal == 0)
                    {
                        var ga = _garagemService.GetById(vagaService.GaragemId);
                        ga.Vagas = _vagaService.GetByIdGarage(ga.GaragemId);

                        if (ga.Vagas.Count() == 0)
                        {
                            _garagemService.Remove(ga);
                        }
                        return(JsonConvert.SerializeObject(new { code = 400, message = "Favor informar o valor da locação mensal." }));
                    }

                    if (vagaService.Avulso == true && vagaService.PrecoAvulso == 0)
                    {
                        var ga = _garagemService.GetById(vagaService.GaragemId);
                        ga.Vagas = _vagaService.GetByIdGarage(ga.GaragemId);

                        if (ga.Vagas.Count() == 0)
                        {
                            _garagemService.Remove(ga);
                        }
                        return(JsonConvert.SerializeObject(new { code = 400, message = "Favor informar o valor da locação avulsa." }));
                    }

                    if (vagaService.Avulso == true && vagaService.AposPrimeiraHora == 0)
                    {
                        var ga = _garagemService.GetById(vagaService.GaragemId);
                        ga.Vagas = _vagaService.GetByIdGarage(ga.GaragemId);

                        if (ga.Vagas.Count() == 0)
                        {
                            _garagemService.Remove(ga);
                        }
                        return(JsonConvert.SerializeObject(new { code = 400, message = "Favor informar o valor que deve ser cobrado após a primeira hora de locação." }));
                    }

                    if (vagaService.Diaria == true && vagaService.PrecoDiaria == 0)
                    {
                        var ga = _garagemService.GetById(vagaService.GaragemId);
                        ga.Vagas = _vagaService.GetByIdGarage(ga.GaragemId);

                        if (ga.Vagas.Count() == 0)
                        {
                            _garagemService.Remove(ga);
                        }
                        return(JsonConvert.SerializeObject(new { code = 400, message = "Favor informar o valor da locação diaria." }));
                    }

                    if (vaga.PrecoAvulso == null)
                    {
                        vagaService.PrecoAvulso = null;
                    }
                    if (vaga.PrecoDiaria == null)
                    {
                        vagaService.PrecoDiaria = null;
                    }
                    if (vaga.PrecoMensal == null)
                    {
                        vagaService.PrecoMensal = null;
                    }
                    if (vaga.AposPrimeiraHora == null)
                    {
                        vagaService.AposPrimeiraHora = null;
                    }

                    var usu = _usuarioService.GetById(vagaService.UsuarioId);
                    var gar = _garagemService.GetById(vagaService.GaragemId);

                    if (gar.Condominio && string.IsNullOrEmpty(vaga.NumeroVaga))
                    {
                        return(JsonConvert.SerializeObject(new { code = 400, message = "Como esta Vaga pertence a um condomínio, você precisa fornecer o número da Vaga." }));
                    }
                    if (gar.Condominio && !string.IsNullOrEmpty(vaga.NumeroVaga))
                    {
                        var vagas = _vagaService.GetByIdGarage(vagaService.GaragemId);

                        foreach (var v in vagas)
                        {
                            if (v.NumeroVaga == vagaService.NumeroVaga)
                            {
                                return(JsonConvert.SerializeObject(new { code = 400, message = "Desculpe, mas o número de vaga informado já está cadastrado em outra vaga." }));
                            }
                        }
                    }
                    if (vaga.Avulso && vaga.PrecoAvulso == null)
                    {
                        return(JsonConvert.SerializeObject(new { code = 400, message = "Como você marcou a opção de Locação Avulso, precisa informar o valor para locação avulsa." }));
                    }
                    if (vaga.Avulso && vaga.AposPrimeiraHora == null)
                    {
                        return(JsonConvert.SerializeObject(new { code = 400, message = "Como você marcou a opção de Locação Avulso, precisa informar o valor a ser cobrado após a primeira hora." }));
                    }
                    if (vaga.Mensal && vaga.PrecoMensal == null)
                    {
                        return(JsonConvert.SerializeObject(new { code = 400, message = "Como você marcou a opção de Locação Mensal, precisa informar o valor para locação mensal." }));
                    }
                    if (vaga.Diaria && vaga.PrecoDiaria == null)
                    {
                        return(JsonConvert.SerializeObject(new { code = 400, message = "Como você marcou a opção de Locação Diaria, precisa informar o valor para locação diaria." }));
                    }

                    List <int> ids = new List <int>();

                    for (int i = 0; i < quantidade; i++)
                    {
                        int contador = 0;
                        _vagaService.Add(vagaService);
                        ids.Add(vagaService.VagaId);

                        try
                        {
                            if (fotos != null)
                            {
                                foreach (var f in fotos)
                                {
                                    if (!string.IsNullOrEmpty(f.Imagem))
                                    {
                                        var fot = new Foto();

                                        //int inicio = f.Imagem.IndexOf(",");
                                        var nomeImagem = vagaService.VagaId.ToString() + usu.Email + contador.ToString() + ".jpg";

                                        MD5 md5 = System.Security.Cryptography.MD5.Create();

                                        byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(nomeImagem);
                                        byte[] hash       = md5.ComputeHash(inputBytes);

                                        StringBuilder sb = new StringBuilder();
                                        for (int z = 0; z < hash.Length; z++)
                                        {
                                            sb.Append(hash[z].ToString("X2"));
                                        }

                                        var nomeCriptografado = sb.ToString();

                                        //if (ConvertStringtoImage(f.Imagem.Substring(inicio + 1), nomeCriptografado))
                                        if (ConvertStringtoImage(f.Imagem, nomeCriptografado))
                                        {
                                            fot.Imagem = nomeCriptografado;
                                            fot.Tipo   = 1;
                                            fot.VagaId = vagaService.VagaId;

                                            _fotoService.Add(fot);
                                            contador++;
                                        }
                                        else
                                        {
                                            foreach (var v in ids)
                                            {
                                                if (_vagaService.GetById(v) != null)
                                                {
                                                    var fo = _fotoService.GetAll().Where(ft => ft.VagaId == v);

                                                    foreach (var ft in fo)
                                                    {
                                                        _fotoService.Remove(ft);
                                                    }

                                                    var vg = _vagaService.GetById(v);
                                                    _vagaService.Remove(vg);
                                                }
                                            }

                                            var g = _garagemService.GetById(vagaService.GaragemId);
                                            g.Vagas = _vagaService.GetByIdGarage(g.GaragemId);

                                            if (g.Vagas.Count() == 0)
                                            {
                                                _garagemService.Remove(g);
                                            }

                                            return(JsonConvert.SerializeObject(new { code = 400, message = "Houve um erro ao cadastrar as fotos da Vaga e por isso ela não foi cadastrada. Por favor tente novamente." }));
                                        }
                                    }
                                }
                            }
                        }
                        catch
                        {
                            foreach (var v in ids)
                            {
                                if (_vagaService.GetById(v) != null)
                                {
                                    var fot = _fotoService.GetAll().Where(f => f.VagaId == v);

                                    foreach (var f in fot)
                                    {
                                        _fotoService.Remove(f);
                                    }

                                    var vg = _vagaService.GetById(v);
                                    _vagaService.Remove(vg);
                                }
                            }

                            var g = _garagemService.GetById(vagaService.GaragemId);
                            g.Vagas = _vagaService.GetByIdGarage(g.GaragemId);

                            if (g.Vagas.Count() == 0)
                            {
                                _garagemService.Remove(g);
                            }
                            return(JsonConvert.SerializeObject(new { code = 400, message = "Houve um erro ao cadastrar as fotos da Vaga e por isso a mesma não foi cadastrada. Por favor tente novamente." }));
                        }
                    }

                    return(JsonConvert.SerializeObject(new { code = 200, message = "Vaga(s) cadastrada(s) com sucesso. Aguarde a nossa aprovação.", id = ids }));
                }
            }
            catch
            {
                return(JsonConvert.SerializeObject(new { code = 400, message = "Erro no cadastro. Por favor, tente novamente." }));
            }
        }