示例#1
0
        public async Task <IActionResult> Save([FromRoute] int id)
        {
            if (!ModelState.IsValid)
            {
                Logger.Instance.WriteError($"ModelState Is not Valid");
                return(BadRequest(ModelState));
            }

            if (string.IsNullOrEmpty(HttpContext.Session.GetString(SessionInfoId)))
            {
                Logger.Instance.WriteWarning($"Session is empty");
                return(Unauthorized());
            }

            RifaItem item = DataBase.Instance.Items.FirstOrDefault(_ => _.Id == id);

            if (item == null)
            {
                Logger.Instance.WriteError($"Id '{id}' didn't exist");
                return(BadRequest());
            }

            item.SetStatus(RifaItem.ItemStatus.Paid);
            DataBase.Instance.Save(item);
            Logger.Instance.WriteInfo($"Paying: {item}");

            return(Ok());
        }
示例#2
0
        public async Task <IActionResult> Save([FromRoute] int id, [FromBody] RifaItem item)
        {
            if (!ModelState.IsValid)
            {
                Logger.Instance.WriteError($"ModelState Is not Valid");
                return(BadRequest(ModelState));
            }
            if (id != item.Id)
            {
                Logger.Instance.WriteError($"Trying to save a invalid id. Url: '{id}'. Body '{item.Id}'.");
                return(BadRequest());
            }

            RifaItem itemDb = DataBase.Instance.Items.FirstOrDefault(_ => _.Id == id);

            if (itemDb == null)
            {
                Logger.Instance.WriteError($"Id '{id}' didn't exist");
                return(BadRequest());
            }

            if (itemDb.Status > RifaItem.ItemStatus.Reserved || itemDb.SessionId != HttpContext.Session.Id)
            {
                Logger.Instance.WriteWarning($"Invalid state. Session '{HttpContext.Session.Id}' trying save: {item}");
                return(Unauthorized());
            }

            Logger.Instance.WriteNone($"Session '{HttpContext.Session.Id}' reserved item: {item}");

            item.SessionId = itemDb.SessionId;
            item.SetStatus(itemDb.Status == RifaItem.ItemStatus.Reserving ? RifaItem.ItemStatus.Reserved : itemDb.Status);
            Mail.Instance.Reserved(item);

            await DataBase.Instance.Save(item);

            return(Ok());
        }
示例#3
0
        public async Task <IActionResult> GetItem([FromRoute] int id)
        {
            if (!ModelState.IsValid)
            {
                Logger.Instance.WriteError($"ModelState Is not Valid");
                return(BadRequest(ModelState));
            }

            RifaItem item = DataBase.Instance.Items.FirstOrDefault(_ => _.Id == id);

            if (item == null)
            {
                Logger.Instance.WriteError($"Id '{id}' didn't exist");
                return(BadRequest());
            }

            if (item.Status != RifaItem.ItemStatus.Idle)
            {
                if (item.Status > RifaItem.ItemStatus.Idle && item.SessionId != HttpContext.Session.Id)
                {
                    Logger.Instance.WriteWarning($"Invalid state. Session '{HttpContext.Session.Id}' trying get: {item}");
                    return(Unauthorized());
                }
            }

            if (item.Status == RifaItem.ItemStatus.Idle)
            {
                Logger.Instance.WriteNone($"Session '{HttpContext.Session.Id}' reserving item: {item}");
                item.SetStatus(RifaItem.ItemStatus.Reserving);
            }

            item.SessionId = HttpContext.Session.Id;
            await DataBase.Instance.Save(item);

            return(Ok(item));
        }