public async Task <int> ManageAdminFoundAlertsAsync(AdminManageFoundAlertRequest request) { int records; PetAlertTableModel petAlert = null; using (var dbConnection = _dbConnectionFactory.Open()) { using (var trans = dbConnection.OpenTransaction()) { if (request.Id.HasValue) { petAlert = await dbConnection.SingleByIdAsync <PetAlertTableModel>(request.Id.Value) .ConfigureAwait(false); } else if (request.Code.HasValue) { petAlert = await dbConnection.SingleAsync <PetAlertTableModel>(p => p.Code == request.Code.Value) .ConfigureAwait(false); } var action = request.Action; records = await dbConnection.UpdateOnlyAsync(new PetAlertTableModel { Approved = action }, x => x.Approved, x => x.Id == petAlert.Id) .ConfigureAwait(false); trans.Commit(); } } return(records); }
public async Task <PetAlertTableModel> GetPetAlertByCodeAsync(Guid petAlertCode) { var petAlert = new PetAlertTableModel(); using (var dbConnection = _dbConnectionFactory.Open()) { petAlert = await dbConnection.SingleAsync <PetAlertTableModel>(p => p.Code == petAlertCode) .ConfigureAwait(false); await dbConnection.LoadReferencesAsync(petAlert); } return(petAlert); }
public PetAlert MapPetAlertTableToPetAlert(PetAlertTableModel petAlertTable) { return(new PetAlert { Id = petAlertTable.Id, Code = petAlertTable.Code, PetId = petAlertTable.PetId, Latitude = petAlertTable.Latitude, Longitude = petAlertTable.Longitude, Type = petAlertTable.AlertType, Status = petAlertTable.AlertStatus, CreatedOn = petAlertTable.CreatedOn, SolvedOn = petAlertTable.SolvedOn }); }
public async Task <int> AddPetAlertAsync(PetAlertTableModel petAlertTable) { long newId; using (var dbConnection = _dbConnectionFactory.Open()) { using (var trans = dbConnection.OpenTransaction()) { var pet = await dbConnection.SingleAsync <PetTableModel>(p => p.Id == petAlertTable.PetId) .ConfigureAwait(false); newId = await dbConnection.InsertAsync <PetAlertTableModel>(petAlertTable, selectIdentity : true) .ConfigureAwait(false); await dbConnection.UpdateOnlyAsync(new PetTableModel { Status = (int)PetStatusEnum.Lost }, x => x.Status, x => x.Id == pet.Id) .ConfigureAwait(false); trans.Commit(); } } return((int)newId); }
public async Task <int> AddPetPublicAlertAsync(PetAlertTableModel petAlertTable, List <PetAlertImageTableModel> petAlertImagesTable) { long newId; using (var dbConnection = _dbConnectionFactory.Open()) { using (var trans = dbConnection.OpenTransaction()) { newId = await dbConnection.InsertAsync <PetAlertTableModel>(petAlertTable, selectIdentity : true) .ConfigureAwait(false); foreach (var image in petAlertImagesTable) { image.PetAlertTableModelId = (int)newId; await dbConnection.InsertAsync <PetAlertImageTableModel>(image) .ConfigureAwait(false); } trans.Commit(); } } return((int)newId); }
public async Task <PetAlertDetails> GetPetAlertDetailsAsync(PetAlertDetailsRequest request) { PetAlertDetails petAlertDetails = null; PetAlertTableModel petAlertTable = null; using (var dbConnection = _dbConnectionFactory.Open()) { petAlertTable = await dbConnection.SingleAsync <PetAlertTableModel>(pa => pa.Code == request.AlertCode && pa.AlertStatus == (int)AlertStatusEnum.Active) .ConfigureAwait(false); if (petAlertTable != null) { petAlertDetails = new PetAlertDetails(); petAlertDetails.PetInfo = new PetDetails(); petAlertDetails.OwnersInfo = new List <OwnerDetails>(); OwnerDetails ownerDetails; // --- Pet Details --- if (petAlertTable.PetId.HasValue && petAlertTable.PetId > 0) { var petQuery = dbConnection.From <PetTableModel>() .Join <PetTableModel, PetAlertTableModel>((p, pa) => p.Id == pa.PetId && pa.Code == petAlertTable.Code); var petResult = await dbConnection.SelectMultiAsync <PetTableModel, PetAlertTableModel>(petQuery) .ConfigureAwait(false); var petImages = await dbConnection.SelectAsync <PetImageTableModel>(pi => pi.PetTableModelId == petAlertTable.PetId.Value) .ConfigureAwait(false); foreach (var item in petResult) { petAlertDetails.PetInfo.Name = item.Item1.Name; petAlertDetails.PetInfo.ProfileImageUrl = petImages.Where(pi => pi.IsProfileImage).FirstOrDefault()?.ImageUrl; petAlertDetails.PetInfo.DateOfBirth = item.Item1.DateOfBirth; petAlertDetails.PetInfo.Description = item.Item1.Description; petAlertDetails.PetInfo.LostComment = item.Item2.Comment; petAlertDetails.PetInfo.LostDateTime = item.Item2.CreatedOn; petAlertDetails.PetInfo.PositionImageUrl = item.Item2.PositionImageUrl; petAlertDetails.PetInfo.Images = petImages.Select(pi => pi.ImageUrl).ToList(); } } else { var petImages = await dbConnection.SelectAsync <PetAlertImageTableModel>(pi => pi.PetAlertTableModelId == petAlertTable.Id) .ConfigureAwait(false); petAlertDetails.PetInfo.Name = GeneralHelper.GetAnonymousTitle(petAlertTable.AlertType); petAlertDetails.PetInfo.LostComment = petAlertTable.Comment; petAlertDetails.PetInfo.LostDateTime = petAlertTable.CreatedOn; petAlertDetails.PetInfo.PositionImageUrl = petAlertTable.PositionImageUrl; petAlertDetails.PetInfo.Images = petImages.Select(x => x.ImageUrl).ToList(); } // --- Owner Details --- if (petAlertTable.OwnerTableModelId.HasValue && petAlertTable.OwnerTableModelId > 0) { // --- Owner's Pet -- if (petAlertTable.PetId.HasValue && petAlertTable.PetId.Value > 0) { var ownersQuery = dbConnection.From <OwnerPetTableModel>() .Join <OwnerPetTableModel, OwnerTableModel>((op, o) => op.OwnerTableModelId == o.Id) .Join <OwnerPetTableModel, OwnerSettingTableModel>((op, os) => op.OwnerTableModelId == os.OwnerTableModelId) .Where(op => op.PetTableModelId == petAlertTable.PetId.Value); var ownersResult = await dbConnection.SelectMultiAsync <OwnerPetTableModel, OwnerTableModel, OwnerSettingTableModel>(ownersQuery) .ConfigureAwait(false); foreach (var item in ownersResult) { ownerDetails = new OwnerDetails { FullName = $"{item.Item2.FirstName} {item.Item2.LastName}", ProfileImageUrl = item.Item2.ProfileImageUrl, Email = item.Item3.ShowEmailForAlerts ? item.Item2.Email : string.Empty, PhoneNumber1 = item.Item3.ShowPhoneNumberForAlerts ? item.Item2.PhoneNumber1 : string.Empty, PhoneNumber2 = item.Item3.ShowPhoneNumberForAlerts ? item.Item2.PhoneNumber2 : string.Empty, Address1 = item.Item3.ShowAddressForAlerts ? item.Item2.Address1 : string.Empty, Address2 = item.Item3.ShowAddressForAlerts ? item.Item2.Address2 : string.Empty }; petAlertDetails.OwnersInfo.Add(ownerDetails); } } else // --- Other Pet --- { var ownersQuery = dbConnection.From <OwnerTableModel>() .Join <OwnerTableModel, OwnerSettingTableModel>((o, os) => o.Id == os.OwnerTableModelId) .Where(o => o.Id == petAlertTable.OwnerTableModelId); var ownersResult = await dbConnection.SelectMultiAsync <OwnerTableModel, OwnerSettingTableModel>(ownersQuery) .ConfigureAwait(false); foreach (var item in ownersResult) { ownerDetails = new OwnerDetails { FullName = $"{item.Item1.FirstName} {item.Item1.LastName}", ProfileImageUrl = item.Item1.ProfileImageUrl, Email = item.Item2.ShowEmailForAlerts ? item.Item1.Email : string.Empty, PhoneNumber1 = item.Item2.ShowPhoneNumberForAlerts ? item.Item1.PhoneNumber1 : string.Empty, PhoneNumber2 = item.Item2.ShowPhoneNumberForAlerts ? item.Item1.PhoneNumber2 : string.Empty, Address1 = item.Item2.ShowAddressForAlerts ? item.Item1.Address1 : string.Empty, Address2 = item.Item2.ShowAddressForAlerts ? item.Item1.Address2 : string.Empty }; petAlertDetails.OwnersInfo.Add(ownerDetails); } } } } } return(petAlertDetails); }