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()); }
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()); }
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)); }