public ActionResult SERVICES(Class_Services _Services)
        {
            var _BookItem = new Class_BookItem();

            if (_Services.Consumo_TabInput == 1)
            {
                var _BookItemDate = _Services.Consumo_Date.Split("/");
                _BookItem = new Class_BookItem()
                {
                    StatusId = BookItemStatus.Consumido,
                    BookId   = _Services.Reserve_ID,

                    Id                    = _Services.Consumo_ExtractID,
                    DateConsume           = DateTime.Parse(string.Format("{0}/{1}/{2} 00:01", _BookItemDate[1], _BookItemDate[0], _BookItemDate[2])),
                    GroupLevelItemId      = _Services.Consumo_GroupLevelItemID,
                    SeasonUnit            = _Services.Consumo_QtUnit,
                    SeasonDesciption      = _Services.Consumo_NAME,
                    SeasonValue           = _Services.Consumo_VlUnit,
                    SeasonDiscountValue   = _Services.Consumo_VlDiscount,
                    SeasonDiscountPercent = _Services.Consumo_PercDiscount,
                    SeasonAdvance         = 0,
                    OBS                   = _Services.Consumo_OBS
                };
            }
            else if (_Services.Entretenimento_TabInput == 1)
            {
                var _BookItemDate = _Services.Entretenimento_Date.Split("/");
                if (_Services.Entretenimento_Time == "")
                {
                    _Services.Entretenimento_Time = "00:01";
                }
                _BookItem = new Class_BookItem()
                {
                    StatusId = BookItemStatus.Consumido,
                    BookId   = _Services.Reserve_ID,

                    Id                    = _Services.Entretenimento_ExtractID,
                    DateConsume           = DateTime.Parse(string.Format("{0}/{1}/{2} {3}", _BookItemDate[1], _BookItemDate[0], _BookItemDate[2], _Services.Entretenimento_Time)),
                    GroupLevelItemId      = _Services.Entretenimento_GroupLevelItemID,
                    SeasonUnit            = _Services.Entretenimento_QtUnit,
                    SeasonDesciption      = _Services.Entretenimento_NAME,
                    SeasonValue           = _Services.Entretenimento_VlUnit,
                    SeasonDiscountValue   = _Services.Entretenimento_VlDiscount,
                    SeasonDiscountPercent = _Services.Entretenimento_PercDiscount,
                    SeasonAdvance         = 0,
                    OBS                   = _Services.Entretenimento_OBS
                };
                if (_BookItem.DateConsume >= DateTime.Today.ToLocalTime())
                {
                    _BookItem.StatusId = BookItemStatus.Reservado;
                }
            }
            else if (_Services.Ajuste_TabInput == 1)
            {
                _BookItem = _context.Class_BookItem.FirstOrDefault(m => m.Id == _Services.Ajuste_ExtractID);

                _BookItem.SeasonUnit            = _Services.Ajuste_SeasonDays;
                _BookItem.SeasonDiscountPercent = _Services.Ajuste_PercDiscount;

                var _VlTotal    = _BookItem.SeasonValue * _Services.Ajuste_SeasonDays;
                var _VlDiscount = _VlTotal * ((double)_Services.Ajuste_PercDiscount / 100);
                _BookItem.SeasonDiscountValue = _VlDiscount;

                var _OBS = _BookItem.OBS + string.Format("{0}=={1}, {2}==", Environment.NewLine, DateTime.Today.ToString("dd/MM"), _Services.Ajuste_OBS);
                while (_OBS.Length > 200)
                {
                    try
                    {
                        _OBS = _OBS.Substring(0, _OBS.IndexOf("==")) + _OBS.Substring(_OBS.IndexOf("==", _OBS.IndexOf("==") + 2) + 3);
                    }
                    catch
                    {
                        _OBS = _OBS.Substring(0, 199);
                    }
                }
                _BookItem.OBS = _OBS;
            }
            else if (_Services.CheckOut_TabInput == 1)
            {
                var _BookItemDate = DateTime.Today.ToString("dd/MM/yyyy").Split("/");
                _BookItem = new Class_BookItem()
                {
                    StatusId = BookItemStatus.Consumido,
                    BookId   = _Services.Reserve_ID,

                    Id                    = 0,
                    DateConsume           = DateTime.Parse(string.Format("{0}/{1}/{2} 00:01", _BookItemDate[1], _BookItemDate[0], _BookItemDate[2])),
                    GroupLevelItemId      = 0,
                    SeasonUnit            = 1,
                    SeasonDesciption      = string.Format("Check-Out, Forma de Pagto: {0}", _Services.CheckOut_PayForm),
                    SeasonValue           = _Services.CheckOut_APagar * -1,
                    SeasonDiscountValue   = 0,
                    SeasonDiscountPercent = 0,
                    SeasonAdvance         = 0,
                    OBS                   = _Services.CheckOut_OBS
                };
            }
            else
            {
                return(RedirectToAction(nameof(Error), new { _Message = "Não houve mudança significativa!" }));
            }

            if (_BookItem.Id == 0)
            {
                _context.Add(_BookItem);
            }
            else
            {
                _context.Update(_BookItem);
            }
            _context.SaveChanges();

            //AJUSTE - Checkin
            if (_Services.Ajuste_TabInput == 1)
            {
                var _BookItemDate = _Services.Ajuste_DateOut.Split("/");
                var _Book         = _context.Class_Book.FirstOrDefault(m => m.Id == _BookItem.BookId);

                _Book.Book_DateOut = DateTime.Parse(string.Format("{0}/{1}/{2} 00:01", _BookItemDate[1], _BookItemDate[0], _BookItemDate[2]));

                _context.Update(_BookItem);
                _context.SaveChanges();
            }
            else if (_Services.CheckOut_TabInput == 1)
            {
                //Ajusta Status Historico de CONSUMO
                var _Consumo = from s in _context.Class_BookItem
                               where s.BookId == _Services.Reserve_ID && s.StatusId == BookItemStatus.Reservado
                               select s;
                foreach (var _loop in _Consumo)
                {
                    _loop.StatusId = BookItemStatus.Consumido;
                    _context.Update(_loop);
                }
                _context.SaveChanges();
                // ajusta Status da Reserva
                var _Book = _context.Class_Book.Where(m => m.Id == _Services.Reserve_ID).FirstOrDefault();
                _Book.StatusId = BookStatus.Finalizado;
                _context.Update(_Book);
                _context.SaveChanges();

                //return View(_Services);
                return(RedirectToAction("SERVICES", "Index", new { _BookID = _Services.Reserve_ID, _ExtractID = 0 }));
            }
            //return View(_Services);
            return(RedirectToAction("SERVICES", "Reception", new { _BookID = _Services.Reserve_ID, _ExtractID = 0 }));
        }
        public ActionResult CHECKin(Class_Checkin _Checkin)
        {
            if (ModelState.IsValid)
            {
                // Guest

                var _Find = _context.Class_Guest.Where(m => m.CPF == _Checkin.Guest_CPF).FirstOrDefault();
                if (_Find == null)
                {
                    _Find = new Class_Guest()
                    {
                        CPF        = _Checkin.Guest_CPF,
                        Name       = _Checkin.Guest_Name,
                        Phone1     = _Checkin.Guest_Phone1,
                        Phone2     = _Checkin.Guest_Phone2,
                        Email      = _Checkin.Guest_Email,
                        PostalCode = _Checkin.Guest_PostalCode,
                        Address    = _Checkin.Guest_Address,
                        Complement = _Checkin.Guest_Complement,
                        City       = _Checkin.Guest_City,
                        State      = _Checkin.Guest_State,
                        Country    = _Checkin.Guest_Country
                    };
                    _context.Add(_Find);
                }
                else
                {
                    _Find.CPF        = _Checkin.Guest_CPF;
                    _Find.Name       = _Checkin.Guest_Name;
                    _Find.Phone1     = _Checkin.Guest_Phone1;
                    _Find.Phone2     = _Checkin.Guest_Phone2;
                    _Find.Email      = _Checkin.Guest_Email;
                    _Find.PostalCode = _Checkin.Guest_PostalCode;
                    _Find.Address    = _Checkin.Guest_Address;
                    _Find.Complement = _Checkin.Guest_Complement;
                    _Find.City       = _Checkin.Guest_City;
                    _Find.State      = _Checkin.Guest_State;
                    _Find.Country    = _Checkin.Guest_Country;
                    _context.Update(_Find);
                }
                _context.SaveChanges();

                // Book
                var _Book = _context.Class_Book.Where(m => m.GroupLevelItemId == _Checkin.GroupLevelItem_Id && m.StatusId == BookStatus.EmUso).FirstOrDefault();
                if (_Book == null)
                {
                    _Book = new Class_Book
                    {
                        Id = 0
                    };
                }
                _Book.StatusId         = BookStatus.EmUso;
                _Book.GroupLevelItemId = _Checkin.GroupLevelItem_Id;
                _Book.SeasonId         = _Checkin.Season_Id;
                _Book.ChannelId        = _Checkin.Channel_Id;
                _Book.Channel_Code     = _Checkin.Channel_Code;
                _Book.Channel_Tax      = _Checkin.Channel_Tax;
                _Book.Channel_Percent  = _Checkin.Channel_Percent;
                _Book.Book_DateIn      = DateTime.ParseExact(_Checkin.Book_DateIn, "dd/MM/yyyy", null);
                _Book.Book_DateOut     = DateTime.ParseExact(_Checkin.Book_DateOut, "dd/MM/yyyy", null);
                _Book.Book_AdultsNum   = _Checkin.Book_AdultsNum;
                _Book.Book_KidsNum     = _Checkin.Book_KidsNum;
                _Book.Book_PCD         = _Checkin.Book_PCD;
                _Book.Book_PET         = _Checkin.Book_PET;
                _Book.GuestCPF         = _Checkin.Guest_CPF;

                if (_Book.Id == 0)
                {
                    _context.Add(_Book);
                }
                else
                {
                    _context.Update(_Book);
                }
                _context.SaveChanges();
                _Book = _context.Class_Book.Where(m => m.GroupLevelItemId == _Checkin.GroupLevelItem_Id && m.StatusId == BookStatus.EmUso).FirstOrDefault();

                //Services
                var _VlTotal    = _Checkin.Book_PayTax * _Checkin.Book_Days;
                var _VlDiscount = _VlTotal * ((double)_Checkin.Book_PayDiscount / 100);
                var _VlFinal    = _VlTotal - _VlDiscount - _Checkin.Book_PayCash;
                var _BookItem   = new Class_BookItem()
                {
                    Id       = 0,
                    StatusId = BookItemStatus.Consumido,

                    BookId           = _Book.Id,
                    DateConsume      = _Book.Book_DateIn,
                    GroupLevelItemId = _Book.GroupLevelItemId,

                    SeasonDesciption = "Diárias de Hospedagem",
                    SeasonUnit       = _Checkin.Book_Days,
                    SeasonValue      = _Checkin.Book_PayTax,

                    SeasonDiscountValue   = _VlDiscount,
                    SeasonDiscountPercent = _Checkin.Book_PayDiscount,
                    SeasonAdvance         = _Checkin.Book_PayCash,

                    OBS = string.Format("Check-in ({0}-{1}) {2}d, {3}, {4}% desc.",
                                        _Book.Book_DateIn.ToString("dd/MM"),
                                        _Book.Book_DateOut.ToString("dd/MM"),
                                        _Checkin.Book_Days,
                                        _VlTotal.ToString("C2"),
                                        _Checkin.Book_PayDiscount)
                };
                _context.Add(_BookItem);
                _context.SaveChanges();

                return(RedirectToAction(nameof(Index)));
            }

            //
            int _CompanyId;

            try { _CompanyId = int.Parse(User.FindFirst("CompanyId").Value); }
            catch (Exception) { return(RedirectToAction(nameof(Error), new { _Message = "Login Necessário!" })); }
            //
            ViewBag.Season_LIST = from s in _context.Class_Season
                                  where s.StatusId == SeasonStatus.Ativo && s.CompanyId == _CompanyId
                                  orderby s.Name
                                  select new { s.Id, s.Name };

            //
            ViewBag.Channel_LIST = from s in _context.Class_Channel
                                   where s.CompanyId == _CompanyId && s.StatusId == ChannelStatus.Ativo
                                   orderby s.TypeId, s.Name
            select new { s.Id, s.Name };

            //
            ViewBag.yn_LIST = new SelectList(Enum.GetValues(typeof(GroupLevelItem_YN)));
            //
            return(View(_Checkin));
        }