Exemplo n.º 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());
        }
Exemplo n.º 2
0
        private bool SaveItem(RifaItem item)
        {
            item.Date = DateTime.Now;
            lock (_lock)
            {
                this._items.Items[item.Id - 1] = item;
                this.Save();
            }

            Logger.Instance.WriteInfo($"Item saved: {item}");
            return(true);
        }
Exemplo n.º 3
0
        public async Task <bool> Reserved(RifaItem item)
        {
#if DEBUG
            return(true);
#endif

            return(await TaskEx.Run(() =>
            {
                string message = Resource.Reserved
                                 .Replace("_NAME_", item.Name)
                                 .Replace("_NUMBER_", item.Id.ToString())
                                 .Replace("_MESSAGE_", this.ReplaceBreakLine(item.Comment));
                return SendEmail(message, item);
            }));
        }
Exemplo n.º 4
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());
        }
Exemplo n.º 5
0
        private bool SendEmail(string msg, RifaItem item)
        {
            try
            {
                SmtpClient client = new SmtpClient("smtp.gmail.com")
                {
                    EnableSsl             = true,
                    Port                  = 587,
                    DeliveryMethod        = SmtpDeliveryMethod.Network,
                    UseDefaultCredentials = false,
                    Credentials           = new NetworkCredential(From, Password)
                };

                MailAddress from = new MailAddress(From, "Sandro & Traís", System.Text.Encoding.UTF8);
                MailAddress to   = new MailAddress(item.Email);

                MailMessage message = new MailMessage(from, to)
                {
                    BodyEncoding    = System.Text.Encoding.UTF8,
                    SubjectEncoding = System.Text.Encoding.UTF8,
                    Body            = msg,
                    Subject         = $"Chá Rifa do Gabriel - Nº {item.Id}",
                    IsBodyHtml      = true
                };

                client.Send(message);
                message.Dispose();
                Logger.Instance.WriteInfo($"Email set to: {item}");

                return(true);
            }
            catch (Exception ex)
            {
                Logger.Instance.WriteError($"Sending email to: {item}", ex);
                return(false);
            }
        }
Exemplo n.º 6
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));
        }
Exemplo n.º 7
0
 public async Task <bool> Save(RifaItem item)
 {
     return(await TaskEx.Run(() => SaveItem(item)));
 }