private async Task <ResultSuccess <Partner> > SavePartner() { try { if (!App.GpsEnabled) { return(new ResultSuccess <Partner>(false, "لطفا مکان یاب را فعال نمایید")); } if (CityPicker.SelectedIndex == -1) { return(new ResultSuccess <Partner>(false, "شهر انتخاب نشده است.")); } if (ZonePicker.SelectedIndex == -1) { return(new ResultSuccess <Partner>(false, "منطقه انتخاب نشده است.")); } if (RoutePicker.SelectedIndex == -1) { return(new ResultSuccess <Partner>(false, "مسیر انتخاب نشده است.")); } if (string.IsNullOrWhiteSpace(FirstName.Text) && string.IsNullOrWhiteSpace(LastName.Text)) { return(new ResultSuccess <Partner>(false, "نام و نام خانوادگی وارد نشده است.")); } if (CreditPicker.SelectedIndex == -1) { return(new ResultSuccess <Partner>(false, "اعتبار انتخاب نشده است.")); } var CityId = Cities[CityPicker.SelectedIndex].Id; var ZoneId = Zones.Where(a => a.ParentId == CityId).ToArray()[ZonePicker.SelectedIndex].Id; var Route = Routes.Where(a => a.ParentId == ZoneId).ToArray()[RoutePicker.SelectedIndex]; var DynamicGroups = new DynamicGroupPartner[] { }; if (EditingPartner == null) { EditingPartner = new Partner() { Id = Guid.NewGuid(), Code = "--------" + new Random().Next(0, 999999999).ToString().PadLeft(9, '0'), FirstName = FirstName.Text, LastName = LastName.Text, Name = FirstName.Text + " " + LastName.Text, LegalName = LegalName.Text, ZoneId = Route.Id, GroupCode = Route.EntityGroupCode, ZoneCompleteCode = Route.CompleteCode, Phone1 = Phone1.Text, Phone2 = Phone2.Text, Mobile = Cell.Text, Fax = Fax.Text, Address = Address.Text, IsLegal = IsPartnerLegal.IsToggled, CalculateVATForThisPerson = CalculateVATForThisPerson.IsToggled, Enabled = true, ChangeDate = DateTime.Now, Sent = false, CreditId = Credits[CreditPicker.SelectedIndex].Id }; DynamicGroups = PartnerGroupSwitchs.Select((a, index) => new { a, index }).ToArray().Where(a => a.a.Value.IsToggled).Select(a => new DynamicGroupPartner() { GroupId = PartnerGroups[a.index].Id, PartnerId = EditingPartner.Id }).ToArray(); if (!DynamicGroups.Any()) { return(new ResultSuccess <Partner>(false, "هیچ گروهی انتخاب نشده است.")); } //if (!DynamicGroups.Any()) // DynamicGroups = new DynamicGroupPartner[1] { new DynamicGroupPartner() // { // GroupId = new Guid("00000000-0000-0000-0000-EEEEEEEEEEEE"), // PartnerId = EditingPartner.Id // } }; var result = await App.DB.InsertOrUpdateRecordAsync <Partner>(EditingPartner); if (!result.Success) { return(new ResultSuccess <Partner>(false, result.Message)); } result = await App.DB.InsertOrUpdateAllRecordsAsync <DynamicGroupPartner>(DynamicGroups); if (!result.Success) { return(new ResultSuccess <Partner>(false, result.Message)); } } else { EditingPartner.FirstName = FirstName.Text; EditingPartner.LastName = LastName.Text; EditingPartner.Name = FirstName.Text + " " + LastName.Text; EditingPartner.LegalName = LegalName.Text; EditingPartner.ZoneId = Route.Id; EditingPartner.GroupCode = Route.EntityGroupCode; EditingPartner.ZoneCompleteCode = Route.CompleteCode; EditingPartner.Phone1 = Phone1.Text; EditingPartner.Phone2 = Phone2.Text; EditingPartner.Mobile = Cell.Text; EditingPartner.Fax = Fax.Text; EditingPartner.Address = Address.Text; EditingPartner.IsLegal = IsPartnerLegal.IsToggled; EditingPartner.CalculateVATForThisPerson = CalculateVATForThisPerson.IsToggled; EditingPartner.ChangeDate = DateTime.Now; EditingPartner.Sent = false; EditingPartner.CreditId = Credits[CreditPicker.SelectedIndex].Id; DynamicGroups = PartnerGroupSwitchs.Select((a, index) => new { a, index }).ToArray().Where(a => a.a.Value.IsToggled).Select(a => new DynamicGroupPartner() { GroupId = PartnerGroups[a.index].Id, PartnerId = EditingPartner.Id }).ToArray(); if (!DynamicGroups.Any()) { return(new ResultSuccess <Partner>(false, "هیچ گروهی انتخاب نشده است.")); } //if (!DynamicGroups.Any()) // DynamicGroups = new DynamicGroupPartner[1] { new DynamicGroupPartner() // { // GroupId = new Guid("00000000-0000-0000-0000-EEEEEEEEEEEE"), // PartnerId = EditingPartner.Id // } }; var result = await App.DB.InsertOrUpdateRecordAsync <Partner>(EditingPartner); if (!result.Success) { return(new ResultSuccess <Partner>(false, result.Message)); } result = await App.DB.DeletePartnerDynamicGroupsAsync(EditingPartner.Id, EditingPartner.Groups.Select(a => a.Id).ToArray()); if (!result.Success) { return(new ResultSuccess <Partner>(false, result.Message)); } result = await App.DB.InsertAllRecordsAsync <DynamicGroupPartner>(DynamicGroups); if (!result.Success) { return(new ResultSuccess <Partner>(false, result.Message)); } } if (PartnerListForm != null) { await PartnerListForm.FillPartners(); } if (InsertedInformations_Partners != null) { await InsertedInformations_Partners.FillPartners(); } return(new ResultSuccess <Partner>(true, "", EditingPartner)); } catch (Exception err) { return(new ResultSuccess <Partner>(false, err.ProperMessage())); } }