public void CreateCurrency(string organisationId, Currency currency) { using var context = Context(); if (context.OrganisationCurrency.Any(u => u.OrganisationId == organisationId && u.CurrencyId == currency.Id)) { throw new Exception("Currency already created"); } if (currency.ExchangeRates == null || !currency.ExchangeRates.Any() || currency.ExchangeRates.Any(u => u.ExchangeRate <= 0)) { throw new Exception("Exchange rate is require"); } var organisationCurrency = new Dal.Models.OrganisationCurrency { CurrencyId = currency.Id, OrganisationId = organisationId }; context.OrganisationCurrency.Add(organisationCurrency); foreach (var exchangeRate in currency.ExchangeRates) { context.ExchangeRate.Add(new Dal.Models.ExchangeRate { ExchangeRate1 = (decimal)exchangeRate.ExchangeRate, FromOrganisationCurrency = organisationCurrency, IsAuto = exchangeRate.IsAuto, ToOrganisationCurrency = context.OrganisationCurrency.FirstOrDefault(u => u.OrganisationId == organisationId && u.CurrencyId == exchangeRate.CurrencyId) }); } context.SaveChanges(); }
public void Create(Organsation organsation, string userId) { using var context = Context(); if (!organsation.DeclareTax) { organsation.OrganisationBaseCurrency.TaxCurrencyId = organsation.OrganisationBaseCurrency.BaseCurrencyId; } if (!string.IsNullOrEmpty(organsation.LogoUrl)) { organsation.LogoUrl = UploadFile(organsation.LogoUrl); } var newOrganisation = new Dal.Models.Organisation { BussinessRegistrationNumber = organsation.DeclareTax?organsation.BussinessRegistrationNumber:"", DeclareTax = organsation.DeclareTax, Description = organsation.Description, DisplayName = organsation.DisplayName, LegalLocalName = organsation.DeclareTax?organsation.LegalLocalName:"", LegalName = organsation.DeclareTax?organsation.LegalName:"", LineBusiness = organsation.LineBusiness, OrganisationTypeId = organsation.OrganisationTypeId, TaxNumber = organsation.DeclareTax?organsation.TaxNumber:"", OrganisationBaseCurrency = new Dal.Models.OrganisationBaseCurrency { BaseCurrencyId = organsation.OrganisationBaseCurrency.BaseCurrencyId, TaxCurrencyId = organsation.OrganisationBaseCurrency.TaxCurrencyId }, Contact = new Dal.Models.Contact { Address = organsation.Contact.Address, ContactName = organsation.Contact.ContactName, Email = organsation.Contact.Email, PhoneNumber = organsation.Contact.PhoneNumber, Website = organsation.Contact.Website, Id = Guid.NewGuid().ToString() }, LogoUrl = organsation.LogoUrl, Id = Guid.NewGuid().ToString() }; var workingOrganisation = context.WorkingOrganisation.FirstOrDefault(u => u.UserId == UserId); if (workingOrganisation == null) { workingOrganisation = new Dal.Models.WorkingOrganisation { UserId = userId, Organisation = newOrganisation }; context.WorkingOrganisation.Add(workingOrganisation); } else { workingOrganisation.Organisation = newOrganisation; } newOrganisation.OrganisationUser.Add(new Dal.Models.OrganisationUser { UserId = userId }); if (organsation.OrganisationBaseCurrency.BaseCurrencyId != organsation.OrganisationBaseCurrency.TaxCurrencyId) { var baseCurrency = new Dal.Models.OrganisationCurrency { CurrencyId = organsation.OrganisationBaseCurrency.BaseCurrencyId }; var taxCurrency = new Dal.Models.OrganisationCurrency { CurrencyId = organsation.OrganisationBaseCurrency.TaxCurrencyId }; newOrganisation.OrganisationCurrency.Add(baseCurrency); newOrganisation.OrganisationCurrency.Add(taxCurrency); context.ExchangeRate.Add(new Dal.Models.ExchangeRate { FromOrganisationCurrency = baseCurrency, ToOrganisationCurrency = taxCurrency, IsAuto = false, ExchangeRate1 = organsation.OrganisationBaseCurrency.TaxExchangeRate }); context.ExchangeRate.Add(new Dal.Models.ExchangeRate { FromOrganisationCurrency = taxCurrency, ToOrganisationCurrency = baseCurrency, IsAuto = false, ExchangeRate1 = 1 / organsation.OrganisationBaseCurrency.TaxExchangeRate }); } else { newOrganisation.OrganisationCurrency.Add(new Dal.Models.OrganisationCurrency { CurrencyId = organsation.OrganisationBaseCurrency.BaseCurrencyId, }); } context.Organisation.Add(newOrganisation); context.SaveChanges(); organsation.Id = newOrganisation.Id; }