public async Task <IActionResult> ForceSendAsync(ForceSendScheduleViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(Json(new { message = $"{GlobalConstants.ERROR_ACTION_PREFIX} send {ENTITY_NAME}." }));
            }

            EmailScheduleResponse _ScheduleResponse = await __EmailScheduleManager.GetByUIDAsync(model.UID);

            if (!_ScheduleResponse.Success)
            {
                return(Json(new { message = $"{GlobalConstants.ERROR_ACTION_PREFIX} find {ENTITY_NAME}." }));
            }

            if (!model.RetainSchedule)
            {
                await __EmailScheduleManager.SendScheduledEmail(_ScheduleResponse);
            }
            else
            {
                await __EmailScheduleManager.SendScheduledEmail(_ScheduleResponse, false);
            }

            if (model.SendCopyToSelf)
            {
                _ScheduleResponse.RecipientEmailAddress = __UserManager.GetUserAsync(HttpContext.User).Result.Email;
                await __EmailScheduleManager.SendScheduledEmail(_ScheduleResponse, false);
            }

            return(RedirectToAction("Index", "EmailSchedule", new { Area = "Email", successMessage = $"Successfully attempted to send {ENTITY_NAME}s." }));
        }
        public async Task <IActionResult> DeleteModalAsync(Guid uid)
        {
            if (uid == Guid.Empty)
            {
                return(RedirectToAction("Index", "EmailSchedule", new { Area = "Email", errorMessage = "Unable to find Email Schedule." }));
            }

            EmailScheduleResponse _Response = await __EmailScheduleManager.GetByUIDAsync(uid);

            if (!_Response.Success)
            {
                return(RedirectToAction("Index", "EmailSchedule", new { Area = "Email", errorMessage = "Unable to find Email Schedule." }));
            }

            DeleteEmailScheduleViewModel _Model = new DeleteEmailScheduleViewModel
            {
                UID            = _Response.UID,
                RecipientEmail = _Response.RecipientEmailAddress,
                EmailType      = _Response.EmailType,
                SendTimestamp  = _Response.SendTimestamp,
                Sent           = _Response.Sent
            };

            return(PartialView("_DeleteModal", _Model));
        }
        public async Task <IActionResult> ForceSendModalAsync(Guid uid)
        {
            EmailScheduleResponse _ScheduleResponse = await __EmailScheduleManager.GetByUIDAsync(uid);

            if (!_ScheduleResponse.Success)
            {
                return(Json(new { message = $"{GlobalConstants.ERROR_ACTION_PREFIX} find {ENTITY_NAME}." }));
            }

            return(PartialView("_ForceSendModal", new ForceSendScheduleViewModel
            {
                UID = uid,
                RecipientEmailAddress = _ScheduleResponse.RecipientEmailAddress
            }));
        }
Example #4
0
        public async Task <IActionResult> ForceCompleteAsync(ForceCompleteLoanViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(PartialView(model));
            }

            LoanResponse _Loan = await __LoanManager.GetByUIDAsync(model.UID);

            if (_Loan == null)
            {
                return(Json(new { error = $"{GlobalConstants.ERROR_ACTION_PREFIX} find {ENTITY_NAME}." }));
            }

            if (DateTime.Now >= _Loan.ExpiryTimestamp)
            {
                await __LoanManager.ChangeStatusAsync(_Loan.UID, Status.Complete);
            }
            else
            {
                await __LoanManager.ChangeStatusAsync(_Loan.UID, Status.EarlyComplete);
            }

            await __LoanManager.CompleteLoanAsync(model.UID);

            foreach (LoanEquipmentResponse loanEquipment in await __LoanEquipmentManager.GetAsync(model.UID))
            {
                await __EquipmentManager.UpdateStatusAsync(loanEquipment.EquipmentUID, NsEquipmentEnum.Status.Available);
            }

            EmailScheduleResponse _Schedule = (await __EmailScheduleManager.GetAsync()).FirstOrDefault(s => s.Sent == false && s.RecipientEmailAddress == _Loan.LoaneeEmail && s.SendTimestamp == _Loan.ExpiryTimestamp);

            if (_Schedule != null)
            {
                await __EmailScheduleManager.UpdateSentAsync(_Schedule.UID, true);
            }

            return(Json(new { success = $"{GlobalConstants.SUCCESS_ACTION_PREFIX} completed {ENTITY_NAME}." }));
        }