//
        // GET: /OssbServico/Create

        public ActionResult Create(int id = 0, int area = 0)
        {
            var contrato = _db
                           .CONTRATO
                           .FirstOrDefault(c => c.ID == id);

            if (contrato == null)
            {
                return(HttpNotFound());
            }

            var viewModel = new ContratoServicoViewModel {
                Contrato = id, Erro = "N"
            };

            var area_manutencao = _db
                                  .AREA_MANUTENCAOSet
                                  .FirstOrDefault(a => a.ID == area);

            if (area_manutencao != null)
            {
                viewModel.AreaManutencaoDescricao = area_manutencao.DESCRICAO;
            }

            ViewBag.TERCEIRO = new SelectList(_db
                                              .PESSOA
                                              .Where(p => p.SITUACAO == "A")
                                              .Where(p => p.TERCEIRO == 1), "ID", "RAZAO");

            ViewBag.UNIDADE = new SelectList(_db
                                             .UNIDADE, "ID", "SIGLA");

            return(View(viewModel));
        }
        //
        // GET: /OssbServico/Edit/5

        public ActionResult Edit(int id = 0)
        {
            var contratoServico = _db.CONTRATO_SERVICO
                                  .FirstOrDefault(os => os.ID == id);

            if (contratoServico == null)
            {
                return(HttpNotFound());
            }



            var viewModel = new ContratoServicoViewModel
            {
                Id       = contratoServico.ID,
                Contrato = contratoServico.CONTRATO,
                AreaManutencaoDescricao = contratoServico.AREA_MANUTENCAO1.DESCRICAO,
                ServicoDescricao        = contratoServico.SERVICO1.DESCRICAO,
                Terceiro      = contratoServico.TERCEIRO,
                Quantidade    = contratoServico.QUANTIDADE.ToString("F"),
                ValorMo       = contratoServico.VALOR_MO.ToString("C"),
                ValorMat      = contratoServico.VALOR_MAT.ToString("C"),
                ValorTerceiro = contratoServico.VALOR_TERCEIRO.ToString("C"),
                Erro          = "N"
            };

            ViewBag.UNIDADE  = new SelectList(_db.UNIDADE, "ID", "SIGLA", contratoServico.UNIDADE);
            ViewBag.TERCEIRO = new SelectList(_db.PESSOA.Where(p => p.SITUACAO == "A").Where(p => p.TERCEIRO == 1), "ID", "RAZAO", contratoServico.TERCEIRO);


            return(View(viewModel));
        }
        //
        // GET: /OssbServico/
        public ActionResult Index(int id = 0)
        {
            var contrato = _db.CONTRATO.FirstOrDefault(co => co.ID == id);

            if (contrato == null)
            {
                return(HttpNotFound());
            }

            var contratoServico = _db.CONTRATO_SERVICO
                                  .Include(o => o.PESSOA)
                                  .Where(o => o.CONTRATO == id);

            var viewModel = new ContratoServicoViewModel {
                Lista = contratoServico.ToList(), Contrato = id
            };

            return(View(viewModel));
        }
        public ActionResult Create(ContratoServicoViewModel viewModel)
        {
            if (String.IsNullOrEmpty(viewModel.ServicoDescricao))
            {
                ModelState.AddModelError(string.Empty, "Informe um serviço!");
            }

            if (String.IsNullOrEmpty(viewModel.AreaManutencaoDescricao))
            {
                ModelState.AddModelError(string.Empty, "Informe uma area de manutenção!");
            }


            if (ModelState.IsValid)
            {
                SERVICO servico = _db.SERVICO.FirstOrDefault(serv => serv.DESCRICAO == viewModel.ServicoDescricao);

                if (servico == null)
                {
                    servico = new SERVICO()
                    {
                        DESCRICAO     = viewModel.ServicoDescricao,
                        ESPECIALIDADE = 1,
                        SITUACAO      = "A"
                    };

                    _db.SERVICO.Add(servico);

                    _db.SaveChanges();
                }

                AREA_MANUTENCAO area_manutencao = _db.AREA_MANUTENCAOSet.FirstOrDefault(area => area.DESCRICAO == viewModel.AreaManutencaoDescricao);

                if (area_manutencao == null)
                {
                    area_manutencao = new AREA_MANUTENCAO()
                    {
                        DESCRICAO = viewModel.AreaManutencaoDescricao,
                        SITUACAO  = "A"
                    };

                    _db.AREA_MANUTENCAOSet.Add(area_manutencao);

                    _db.SaveChanges();
                }


                var contratoServico = new CONTRATO_SERVICO
                {
                    CONTRATO        = viewModel.Contrato,
                    AREA_MANUTENCAO = area_manutencao.ID,
                    SERVICO         = servico.ID,
                    TERCEIRO        = viewModel.Terceiro,
                    QUANTIDADE      = Convert.ToDecimal(viewModel.Quantidade),
                    VALOR_MO        = Convert.ToDecimal(viewModel.ValorMo),
                    VALOR_TERCEIRO  = Convert.ToDecimal(viewModel.ValorTerceiro),
                    UNIDADE         = viewModel.Unidade,
                };

                _db.CONTRATO_SERVICO.Add(contratoServico);
                _db.SaveChanges();

                return(RedirectToAction("Create", new { id = viewModel.Contrato, area = contratoServico.AREA_MANUTENCAO }));
            }

            viewModel.Erro = "S";

            ViewBag.UNIDADE  = new SelectList(_db.UNIDADE, "ID", "SIGLA", viewModel.Unidade);
            ViewBag.TERCEIRO = new SelectList(_db.PESSOA.Where(p => p.SITUACAO == "A").Where(p => p.TERCEIRO == 1), "ID", "RAZAO", viewModel.Terceiro);

            return(View(viewModel));
        }