public async Task <Response <Receptionist> > InsertItem(ReceptionistRequest receptionistRequest) { using var transaction = _db.Database.BeginTransaction(); try { User user = new User(); user.UserType = receptionistRequest.UserType; user.FirstName = receptionistRequest.FirstName; user.LastName = receptionistRequest.LastName; user.FatherHusbandName = receptionistRequest.FatherHusbandName; user.Gender = receptionistRequest.Gender; user.Cnic = receptionistRequest.Cnic; user.Contact = receptionistRequest.Contact; user.EmergencyContact = receptionistRequest.EmergencyContact; user.Email = receptionistRequest.Email; user.Address = receptionistRequest.Address; user.JoiningDate = receptionistRequest.JoiningDate; user.FloorNo = receptionistRequest.FloorNo; user.Experience = receptionistRequest.Experience; user.DateOfBirth = receptionistRequest.DateOfBirth; user.MaritalStatus = receptionistRequest.MaritalStatus; user.Religion = receptionistRequest.Religion; await _db.Users.AddAsync(user); await _db.SaveChangesAsync(); if (receptionistRequest.QualificationList != null) { if (receptionistRequest.QualificationList.Count > 0) { foreach (QualificationRequest drQualification in receptionistRequest.QualificationList) { Qualification qualification = new Qualification(); qualification.UserId = user.Id; qualification.Certificate = drQualification.Certificate; qualification.Description = drQualification.Description; qualification.QualificationType = drQualification.QualificationType; await _db.Qualifications.AddAsync(qualification); await _db.SaveChangesAsync(); } } } Receptionist receptionist = new Receptionist(); receptionist.UserId = user.Id; receptionist.JobType = receptionistRequest.JobType; receptionist.ShiftTime = receptionistRequest.ShiftTime; await _db.Receptionists.AddAsync(receptionist); await _db.SaveChangesAsync(); transaction.Commit(); return(new Response <Receptionist>(true, "Success: Created object.", receptionist)); } catch (Exception exception) { transaction.Rollback(); return(new Response <Receptionist>(false, $"Server Failure: Unable to insert object. Because {exception.Message}", null)); } }
public async Task <Response <Receptionist> > UpdateItem(int id, ReceptionistRequest receptionistRequest) { using var transaction = _db.Database.BeginTransaction(); try { if (id != receptionistRequest.Id) { transaction.Rollback(); return(new Response <Receptionist>(false, "Failure: Id sent in body does not match object Id", null)); } Receptionist receptionist = await _db.Receptionists.Include(x => x.User.Qualifications).FirstOrDefaultAsync(x => x.Id == id);; if (receptionist == null) { transaction.Rollback(); return(new Response <Receptionist>(false, $"Failure: Unable to update receptionist {receptionistRequest.FirstName}. Because Id is invalid. ", null)); } receptionist.JobType = receptionistRequest.JobType; receptionist.ShiftTime = receptionistRequest.ShiftTime; await _db.SaveChangesAsync(); if (receptionistRequest.QualificationList != null) { if (receptionistRequest.QualificationList.Count > 0) { foreach (QualificationRequest drQualification in receptionistRequest.QualificationList) { Qualification qualification = await _db.Qualifications.FirstOrDefaultAsync(x => x.Id == drQualification.Id && x.UserId == receptionist.UserId); if (qualification == null) { transaction.Rollback(); return(new Response <Receptionist>(false, $"Failure: Unable to update qualification {drQualification.Certificate}. Because Id is invalid. ", null)); } qualification.Certificate = drQualification.Certificate; qualification.Description = drQualification.Description; qualification.QualificationType = drQualification.QualificationType; await _db.SaveChangesAsync(); } } } User user = await _db.Users.FirstOrDefaultAsync(x => x.Id == receptionist.UserId); if (user == null) { transaction.Rollback(); return(new Response <Receptionist>(false, "Failure: Data does not exist.", null)); } user.UserType = receptionistRequest.UserType; user.FirstName = receptionistRequest.FirstName; user.LastName = receptionistRequest.LastName; user.FatherHusbandName = receptionistRequest.FatherHusbandName; user.Gender = receptionistRequest.Gender; user.Cnic = receptionistRequest.Cnic; user.Contact = receptionistRequest.Contact; user.EmergencyContact = receptionistRequest.EmergencyContact; user.Email = receptionistRequest.Email; user.Address = receptionistRequest.Address; user.JoiningDate = receptionistRequest.JoiningDate; user.FloorNo = receptionistRequest.FloorNo; user.Experience = receptionistRequest.Experience; user.DateOfBirth = receptionistRequest.DateOfBirth; user.MaritalStatus = receptionistRequest.MaritalStatus; user.Religion = receptionistRequest.Religion; await _db.SaveChangesAsync(); transaction.Commit(); return(new Response <Receptionist>(true, "Success: Updated object.", receptionist)); } catch (Exception exception) { transaction.Rollback(); return(new Response <Receptionist>(false, $"Server Failure: Unable to update object. Because {exception.Message}", null)); } }