public async Task <ExSaveDataResult> DeleteMeetingWeb([FromBody] ExRemoveMeetingRequest request) { if (request.CheckPassword != WebAppSettings.CheckPassword) { HttpContext.Response.StatusCode = Unauthorized().StatusCode; return(null); } return(await DeleteMeetingInternal(request)); }
public async Task <ExSaveDataResult> DeleteMeeting([FromBody] ExRemoveMeetingRequest request) { var authfailed = true; ClaimsIdentity identity = null; try { identity = HttpContext.User.Identity as ClaimsIdentity; } catch (Exception e) { Logging.Log.LogError("No Claims identity"); } if (identity != null) { var claims = identity.Claims; if (identity.HasClaim(c => c.Type == "UserID")) { var userId = identity.HasClaim(c => c.Type == "UserID") ? identity.FindFirst("UserID").Value : "a"; //BENUTZER ID if (request.UserId.ToString() == userId) { authfailed = false; } } } if (authfailed) { if (request.CheckPassword != WebAppSettings.CheckPassword) { HttpContext.Response.StatusCode = Unauthorized().StatusCode; return(null); } } return(await DeleteMeetingInternal(request)); }
public async Task <IActionResult> DeleteConfirmed(int id) { var tableAppointment = await _context.TblAppointments.FindAsync(id); var tbUser = await _context.TblUsers.AsNoTracking().FirstOrDefaultAsync(a => a.Id == tableAppointment.UserId); RestAccess ra = new RestAccess(tbUser.Id.ToString(), tbUser.RestPasswort, Constants.ServiceClientEndPointWithApiPrefix); var r = new ExRemoveMeetingRequest { MeetingId = id, UserId = tableAppointment.UserId, UserType = EnumUserType.ShopEmployee, CheckPassword = WebAppSettings.CheckPassword, }; var xxx = await ra.DeleteMeetingWeb(r); return(RedirectToAction(nameof(Index))); }
/// <summary> /// Termin entfernen /// </summary> /// <param name="request"></param> /// <returns></returns> private async Task <ExSaveDataResult> DeleteMeetingInternal([FromBody] ExRemoveMeetingRequest request) { using (var db = new Db()) { var meeting = db.TblAppointments .Include(x => x.Employee) .Include(x => x.Employee).ThenInclude(x => x.Store) .Include(x => x.User) .FirstOrDefault(x => x.Id == request.MeetingId); if (meeting.UserId != request.UserId && request.UserType == EnumUserType.Customer) { return(new ExSaveDataResult { Result = EnumSaveDataResult.Error, Caption = "Nicht möglich!", Description = "Nur der Ersteller des Termins kann diesen auch wieder löschen!" }); } meeting.Canceled = true; try { switch (request.UserType) { //Kunde hat den Termin storniert => E-Mail an Shop als Info case EnumUserType.Customer: string shopEMail = meeting.Employee.Store.EMail; string userName = $"{meeting.User.Firstname} {meeting.User.Lastname}"; string emailContent = $"Leider hat {(String.IsNullOrEmpty(userName.Trim()) ? "UNBEKANNT" : userName)} den Termin am {meeting.ValidFrom.AddHours(2):dd.MM.yyy} um {meeting.ValidFrom.AddHours(2):HH:mm} absagen müssen."; string employeeTel = meeting.Employee.TelephoneNumber; string email = _mailgenerator.GetStornoAppointmentShopEmail(new ExEMailStornoAppointmentShop { Message = emailContent }); BissEMail bm = new BissEMail(WebAppSettings.EmailCredentials); var res = await bm.SendHtmlEMail(Constants.SendEMailAs, new List <string> { shopEMail }, "Termin-Storno", email, Constants.SendEMailAsDisplayName); //ToDo: Umstellung auf Push sobald möglich //Common.SendSMS(employeeTel, $"{emailContent} Auf diese SMS kann nicht geantwortet werden."); break; //Shop musst den Termin stonieren => SMS an Kunden als Info //ToDo: Umstellung auf Push sobald möglich case EnumUserType.ShopEmployee: string telCustomer = meeting.User.PhoneNumber; string employeeName = $"{meeting.Employee.FirstName} {meeting.Employee.LastName}"; string smsContent = $"Leider hat {(String.IsNullOrEmpty(employeeName.Trim()) ? "UNBEKANNT" : employeeName)} von {meeting.Employee.Store.CompanyName} den Termin am {meeting.ValidFrom.AddHours(2):dd.MM.yyy} um {meeting.ValidFrom.AddHours(2):HH:mm} absagen müssen. Du kannst gerne wieder einen neuen Termin über die App vereinbaren. Auf diese SMS kann nicht geantwortet werden."; Common.SendSMS(telCustomer, smsContent); break; default: throw new ArgumentOutOfRangeException(); } } catch (Exception e) { Logging.Log.LogWarning($"Could not inform customer or shop about chanceled appointment: {e}"); } try { await db.SaveChangesAsync(); return(ExSaveDataResult.GetDefaultSuccess()); } catch (Exception e) { Logging.Log.LogError($"{e}"); return(ExSaveDataResult.GetDefaultSaveError()); } } }
/// <summary> /// Termin entfernen für WEbApp /// </summary> /// <param name="request"></param> /// <returns></returns> public async Task <ResultData <ExSaveDataResult> > DeleteMeetingWeb(ExRemoveMeetingRequest request) { return(await _wap.Post <ExSaveDataResult>("DeleteMeetingWeb", request)); }