public async Task <IActionResult> UpdateSell(int dealId, SellDealModifyViewModel modfyModel) { var currentDeliveryObjectsTask = _dealObjectProvider.GetDealObjects(dealId); var createUserAccountTask = Task.FromResult(new DataProviderModel <CreateUserAccountModel>(new ResultMessage(0, MessageType.Information, ""))); if (modfyModel.AccountAction == AccountAction.New) { createUserAccountTask = _userProvider.CreateUserAccount(modfyModel.PaymentNumber.Value, modfyModel.PaymentType); } await Task.WhenAll(currentDeliveryObjectsTask, createUserAccountTask); var currentDeliveryObjects = currentDeliveryObjectsTask.Result.Model; var createUserAccount = createUserAccountTask.Result.Model; var objectsToDelete = currentDeliveryObjects .Where(c => modfyModel.SelectedDealObjects.All(s => s.ObjectId != c.ObjectId)) .Select(o => o.DealObjectId) .ToList(); var objectsToAdd = modfyModel.SelectedDealObjects .Where(s => currentDeliveryObjects.All(c => c.ObjectId != s.ObjectId)) .Select(o => o.ObjectId) .ToList(); var accountId = modfyModel.AccountAction == AccountAction.Existed ? modfyModel.UserAccountId.Value : createUserAccount.AccountId; var updateModel = new DealUpdateModel(dealId, objectsToDelete, objectsToAdd, modfyModel.Price, modfyModel.Comment, accountId, modfyModel.DeleveryTypeId, modfyModel.Size, modfyModel.Weight, modfyModel.AddressModel.City.CityCode, modfyModel.AddressModel.Locality.LocalityCode, modfyModel.AddressModel.RegionCode, modfyModel.AddressModel.Address, (DeleveryLocationType)modfyModel.AddressModel.DeliveryLocationType); await _dealProvider.UpdateDeal(updateModel, DealType.Sell); return(RedirectToAction(nameof(Index))); }
public async Task <DataProviderVoidModel> UpdateDeal(DealUpdateModel updateModel, DealType dealType) { var listQuery = new List <Query>(); var upsertDealIdentifier = Guid.NewGuid().ToString(); var upsertDealQuery = new Query(upsertDealIdentifier, "UpsertDeal"); upsertDealQuery.Parameters.Add(new QueryParameter("in", "Price", updateModel.Price.ToString(), SqlDbType.Decimal)); upsertDealQuery.Parameters.Add(new QueryParameter("in", "Comment", updateModel.Comment, SqlDbType.NVarChar)); upsertDealQuery.Parameters.Add(new QueryParameter("in", "Deal_Id", updateModel.DealId.ToString(), SqlDbType.Int)); if (dealType == DealType.Sell) { upsertDealQuery.Parameters.Add(new QueryParameter("in", "Account_Id", updateModel.AccountId.ToString(), SqlDbType.Int)); } upsertDealQuery.Parameters.Add(new QueryParameter("in", "BuySell", dealType == DealType.Buy ? "B" : "S", SqlDbType.Int)); listQuery.Add(upsertDealQuery); foreach (var dealObject in updateModel.DealObjectIdsToDelete) { var deleteDealObjectIdentifier = Guid.NewGuid().ToString(); var deleteDealObjectQuery = new Query(deleteDealObjectIdentifier, "DeleteDealObject"); deleteDealObjectQuery.ParentQueryGUID.Add(upsertDealIdentifier); deleteDealObjectQuery.Parameters.Add(new QueryParameter("in", "DealObject_Id", dealObject.ToString(), SqlDbType.Int)); listQuery.Add(deleteDealObjectQuery); } foreach (var objectId in updateModel.ObjectIdsToAdd) { var upsertDealObjectIdentifier = Guid.NewGuid().ToString(); var upsertDealObjectQuery = new Query(upsertDealObjectIdentifier, "UpsertDealObject"); upsertDealObjectQuery.ParentQueryGUID.Add(upsertDealIdentifier); upsertDealObjectQuery.Parameters.Add(new QueryParameter("in", "Object_Id", objectId.ToString(), SqlDbType.Int)); listQuery.Add(upsertDealObjectQuery); } var dealDeliveryIdentifier = Guid.NewGuid().ToString(); var dealDeliveryQuery = new Query(dealDeliveryIdentifier, "UpsertDealDelivery"); dealDeliveryQuery.ParentQueryGUID.Add(upsertDealIdentifier); dealDeliveryQuery.Parameters.Add(new QueryParameter("in", "DeliveryCptyService_Id", updateModel.DeliveryTypeId.ToString(), SqlDbType.Int)); dealDeliveryQuery.Parameters.Add(new QueryParameter("in", "Weight_Decl", updateModel.Weight.ToString(), SqlDbType.Int)); dealDeliveryQuery.Parameters.Add(new QueryParameter("in", "Length_Decl", updateModel.Size.Length.ToString(), SqlDbType.Int)); dealDeliveryQuery.Parameters.Add(new QueryParameter("in", "Height_Decl", updateModel.Size.Height.ToString(), SqlDbType.Int)); dealDeliveryQuery.Parameters.Add(new QueryParameter("in", "Width_Decl", updateModel.Size.Width.ToString(), SqlDbType.Int)); var cityCode = updateModel.DeleveryLocationType == DeleveryLocationType.City ? updateModel.CityCode : updateModel.LocalityCode; dealDeliveryQuery.Parameters.Add(new QueryParameter("in", "CityCode", cityCode, SqlDbType.NVarChar)); dealDeliveryQuery.Parameters.Add(new QueryParameter("in", "Address", updateModel.Address, SqlDbType.NVarChar)); listQuery.Add(dealDeliveryQuery); var result = await _sessionQueryExecutor.Execute(listQuery).ConfigureAwait(false); return(new DataProviderVoidModel(result.ResultMessage)); }
public async Task <IActionResult> UpdateBuy(int dealId, DealModifyModel modfyModel) { var currentDeliveryObjectsTask = _dealObjectProvider.GetDealObjects(dealId); var currentDeliveryObjects = (await currentDeliveryObjectsTask).Model; var objectsToDelete = currentDeliveryObjects .Where(c => modfyModel.SelectedDealObjects.All(s => s.ObjectId != c.ObjectId)) .Select(o => o.DealObjectId) .ToList(); var objectsToAdd = modfyModel.SelectedDealObjects .Where(s => currentDeliveryObjects.All(c => c.ObjectId != s.ObjectId)) .Select(o => o.ObjectId) .ToList(); var updateModel = new DealUpdateModel(dealId, objectsToDelete, objectsToAdd, modfyModel.Price, modfyModel.Comment, null, modfyModel.DeleveryTypeId, modfyModel.Size, modfyModel.Weight, modfyModel.AddressModel.City.CityCode, modfyModel.AddressModel.Locality.LocalityCode, modfyModel.AddressModel.RegionCode, modfyModel.AddressModel.Address, (DeleveryLocationType)modfyModel.AddressModel.DeliveryLocationType); await _dealProvider.UpdateDeal(updateModel, DealType.Buy); return(RedirectToAction(nameof(Index))); }