public ActionResult Create(ContratoViewModel model)
        {
            if (ModelState.IsValid) {
                var contrato = new Contratos();
                fillContrato(contrato, model);

                ContratoService.saveContrato(contrato);
                this.addMensagemSucesso("Contrato criado com sucesso!");
            } else {
                return View(model);
            }
            return RedirectToAction("Index", "Contrato");
        }
        public ActionResult Edit(ContratoViewModel model)
        {
            if (ModelState.IsValid) {
                Contratos contrato = ContratoService.getContrato(model.IDContrato);
                fillContrato(contrato, model);
                try
                {
                    ContratoService.saveContrato(contrato);
                } catch (ConstraintConflictException ex) {
                    this.addMensagemErro(ex.Message);
                    return RedirectToAction("Edit", new { id = model.IDContrato });
                }

                this.addMensagemSucesso("Contrato salvo com sucesso");

            } else {
                return View(model);
            }
            return RedirectToAction("Index", "Contrato");
        }
 public ActionResult Create()
 {
     var model = new ContratoViewModel();
     fillModelLists(model);
     return View(model);
 }
        private ContratoViewModel getViewModel(Contratos contratos)
        {
            var model = new ContratoViewModel() {
                IDContrato = contratos.IDContrato,
                DataVencimento = contratos.DataVencimento,
                IDCliente = contratos.IDCliente,
                IDPrefixo = contratos.IDPrefixo,
                Status =  contratos.Status,
                NomeCliente = contratos.Clientes.Nome,
                NomePrefixo = contratos.Prefixos.Prefixo,
                ListaPrefixos = PrefixoService.getPrefixos(string.Empty, contratos.IDCliente).Select(c => new SelectListItem() { Value = c.IDPrefixo.ToString(), Text = c.Prefixo }).ToList()
            };

            model.ListaPrefixos.First(c => c.Value == contratos.IDPrefixo.ToString()).Selected = true;

            model.ListaStatus = new List<SelectListItem>();
            model.ListaStatus.AddRange(EnumHelper.toSelectList(new StatusContrato()));

            model.ListaStatus.First(c => c.Value == contratos.Status.ToString()).Selected = true;

            if (contratos.ItensContrato != null) {
                foreach (var item in contratos.ItensContrato) {
                    var itemCont = new ItemContratoViewModel() {
                        IDItemContrato = item.IDItemContrato,
                        IDEquipamento = item.PrefixosEquipamentosServicos.EquipamentosServicos.IDEquipamento,
                        IDPrefixoEquipamento = item.IDPrefixoEquipamento,
                        Valor = item.Valor,
                        ListaEquipamentos = contratos.Prefixos.PrefixosEquipamentosServicos.Select(c => new SelectListItem() { Value = c.EquipamentosServicos.Equipamentos.IDEquipamento.ToString(), Text = c.EquipamentosServicos.Equipamentos.Descricao }).ToList(),
                        ListaServicos = contratos.Prefixos.PrefixosEquipamentosServicos.Where(c => c.EquipamentosServicos.IDEquipamento == item.PrefixosEquipamentosServicos.EquipamentosServicos.IDEquipamento).Select(c => new SelectListItem() { Value = c.IDPrefixoEquipamento.ToString(), Text = c.EquipamentosServicos.Servicos.Descricao }).ToList()
                    };

                    itemCont.ListaEquipamentos.First(
                        c => c.Value == item.PrefixosEquipamentosServicos.EquipamentosServicos.IDEquipamento.ToString()).Selected =
                        true;

                    itemCont.ListaServicos.First(c => c.Value == item.IDPrefixoEquipamento.ToString()).Selected = true;

                    model.ListaItemContrato.Add(itemCont);
                }

            }

            fillModelLists(model);

            return model;
        }
        private void fillContrato(Contratos contrato, ContratoViewModel model)
        {
            contrato.IDUsuario = visitor.ID;
            contrato.IDContrato = model.IDContrato;
            contrato.IDCliente = model.IDCliente;
            contrato.IDPrefixo = model.IDPrefixo;
            contrato.Status = Convert.ToInt32(model.Status);

            if(model.DataVencimento != null)
             contrato.DataVencimento = Convert.ToDateTime(model.DataVencimento);

            var listItemContrato = new List<ItensContrato>();

            foreach (var itensContrato in model.ListaItemContrato)
            {

                var itemCont =
               contrato.ItensContrato.FirstOrDefault(c => c.IDPrefixoEquipamento == itensContrato.IDPrefixoEquipamento);

                if (itemCont == null) {
                    itemCont = new ItensContrato() {
                        IDPrefixoEquipamento = itensContrato.IDPrefixoEquipamento
                    };
                }

                itemCont.Valor = itensContrato.Valor;
                itemCont.IDUsuario = visitor.ID;
                itemCont.IDContrato = model.IDContrato;

                listItemContrato.Add(itemCont);

            }

            contrato.ItensContrato = listItemContrato;
        }
        public void fillModelLists(ContratoViewModel model)
        {
            if (model.ListaStatus.Count == 0)
            {
                model.ListaStatus.AddRange(EnumHelper.toSelectList(new StatusContrato()));
            }

            if (model.ListaItemContrato.Count == 0) {
                model.ListaItemContrato.Add(new ItemContratoViewModel());
                model.ListaItemContrato.First().ListaServicos = new List<SelectListItem>();
                model.ListaItemContrato.First().ListaEquipamentos = new List<SelectListItem>();
            }
        }