public bool ValidarSaida(BancoSangueSaidaViewModel vm)
        {
            var cliente = Mapper.Map <Clientes>(vm.Clientes);

            var SumBlood = _bancosangue.GetBlood(cliente);
            var bloodSum = SumBlood.Where(t => t.TipoSangue == vm.TipoSangue).SingleOrDefault();
            var MinBlood = _rep.GetBDSaida(cliente);
            var bloodMin = MinBlood.Where(t => t.TipoSangue == vm.TipoSangue).SingleOrDefault();

            if (bloodMin != null && bloodSum != null)
            {
                bloodSum.Total = bloodSum.Total - bloodMin.Quantidade;
            }

            if (bloodMin != null || bloodSum == null)
            {
                return(false);
            }

            if (bloodSum.Total < 0)
            {
                return(false);
            }

            if (vm.Quantidade > bloodSum.Total)
            {
                return(false);
            }

            return(true);
        }
        public IActionResult Edit(BancoSangueSaidaViewModel vm)
        {
            if (!ModelState.IsValid)
            {
                return(SmartResult(vm));
            }

            try
            {
                var client     = _clientes.GetClienteByIdUsuario();
                var vmClientes = AutoMapper.Mapper.Map <ClientesViewModel>(client);
                vm.Clientes = vmClientes;

                var result = _app.Edit(vm);

                if (result == 402)
                {
                    ModelState.AddModelError("", "Quantidade de saída é menor que o estoque atual desse tipo sanguíneo.");
                }
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", "Ocorreu um erro ao processar sua requisição.");
                Log(ex, "BancoSangueSaidaController.Create.Post");
            }
            return(SmartResult(vm));
        }
 public int Save(BancoSangueSaidaViewModel vm)
 {
     if (vm.Id == 0)
     {
         return(Create(vm));
     }
     else
     {
         return(Edit(vm));
     }
 }
        public int Create(BancoSangueSaidaViewModel vm)
        {
            var validarSaida = ValidarSaida(vm);

            if (!validarSaida)
            {
                return(402);
            }

            var obj = Mapper.Map <BancoSangueSaidaViewModel, BancoSangueSaida>(vm);

            obj.DataSaida = DateTime.Now;
            BeginTransaction();
            _rep.AddBancoSangueSaida(obj);
            return(Commit());
        }
        public int Edit(BancoSangueSaidaViewModel vm)
        {
            var validarSaida = ValidarSaida(vm);

            if (!validarSaida)
            {
                return(402);
            }

            var obj = _rep.Get(vm.Id);

            obj.Quantidade = vm.Quantidade;
            obj.TipoSangue = vm.TipoSangue;
            BeginTransaction();
            _rep.Update(obj);
            return(Commit());
        }
        public IActionResult Create(BancoSangueSaidaViewModel vm)
        {
            ModelState["Id"].Errors.Clear();
            ModelState["Id"].ValidationState = Microsoft.AspNetCore.Mvc.ModelBinding.ModelValidationState.Valid;

            var id     = int.Parse(vm.TipoSangue);
            var exists = EnumValidate(id);

            if (exists == false)
            {
                ModelState.AddModelError("EnumValidate", "Tipo Sanguíneo Inválido");
            }

            if (!ModelState.IsValid)
            {
                return(SmartResult(vm));
            }

            var client     = _clientes.GetClienteByIdUsuario();
            var vmClientes = AutoMapper.Mapper.Map <ClientesViewModel>(client);

            vm.Clientes = vmClientes;
            vm.Id       = 0;

            try
            {
                var result = _app.Create(vm);

                if (result == 402)
                {
                    ModelState.AddModelError("", "Quantidade de saída é maior que o estoque atual desse tipo sanguíneo.");
                }
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", "Ocorreu um erro ao processar sua requisição.");
                Log(ex, "BancoSangueSaidaController.Create.Post");
            }
            return(SmartResult(vm));
        }
 public int Delete(BancoSangueSaidaViewModel vm)
 {
     return(Delete(vm.Id));
 }
        public IActionResult Create()
        {
            var vm = new BancoSangueSaidaViewModel();

            return(SmartResult(vm));
        }